我一直在玩线程,但我一直遇到一个问题,即胎面似乎已经死亡或停止。
这是怎么回事?我该如何绕过它?
我已经包含了代码,但没有将其粘贴到此处,因为我认为这个问题对于ruby来说更为重要。 source code
感谢。
修改 Ruby 1.8,MacOS(雪豹)
答案 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
或者它们会被吞下),那将会停止解释器,并且可以非常有用追踪随机错误。