Ruby线程死?

时间:2011-04-18 11:17:53

标签: ruby multithreading

我一直在玩线程,但我一直遇到一个问题,即胎面似乎已经死亡或停止。

这是怎么回事?我该如何绕过它?

我已经包含了代码,但没有将其粘贴到此处,因为我认为这个问题对于ruby来说更为重要。 source code

感谢。

修改 Ruby 1.8,MacOS(雪豹)

2 个答案:

答案 0 :(得分:3)

看起来您忘记将新的Thread对象添加到线程对象。

3.times do |t|
  threads << Thread.new { word_list.process }
end

你的threads.each {| t | t.join}正在处理一个空数组,因此忽略了你创建的线程。做出改变,它应该等待。

编辑:我的意思是&lt;&lt;在阵列上,没有设置它。

答案 1 :(得分:0)

如果您的线程随机“离开”,请确保将Thread.abort_on_exception设置为true。如果一个未被捕获的异常到达后台线程中的顶层(通过SystemExit,那么不会rescue Exception或者它们会被吞下),那将会停止解释器,并且可以非常有用追踪随机错误。