我正在编写一个使用线程执行一些工作的Ruby程序。正在进行的工作需要完成一个不确定的时间,可能需要5到45秒或更长时间。以下是线程代码的大致示例:
loop do # Program loop
items = get_items
threads = []
for item in items
threads << Thread.new(item) do |i|
# do work on i
end
threads.each { |t| t.join } # What happens if this isn't there?
end
end
我的偏好是跳过加入线程并且不阻塞整个应用程序。但是我不知道这样做的长期影响,特别是因为代码几乎立即再次运行。这样做是否安全?或者有更好的方法来生成一个线程,在无限循环中让它工作,并在完成后清理?
thread.rb
。但是,它没有使用“线程安全”一词。如果你希望他们明确表示它是线程安全的,我可以提交一个文档错误报告。 - Andrew Grimmthread.rb
,这对我来说已经足够证明了!我通常使用.NET编程,因此习惯于显式地区分“这是线程安全的”和“这不是线程安全的”。 - Gavin Miller