等待线程在红宝石中死亡



看来,在Ruby 2.4和2.5中,线程在它们上调用#kill时不会尽快死亡。此代码段将打印未死几次:

thread = Thread.new { loop {} }
thread.kill
puts "Not dead" while thread.alive?

我想阻止执行主线程,直到二级线程被杀死。我尝试使用thread.join.kill,但这当然会阻止主线程,因为线程的循环永远不会终止。

如何确保在主线继续之前杀死线程?

弄清楚了;您仍然可以在杀死线程后#join,因此您可以使用thread.kill.join阻止直到线程死亡。

此代码永远不会打印没有死

thread = Thread.new { loop {} }
thread.kill.join
puts "Not dead" while thread.alive?

我正在这样做:

thread = Thread.new { loop {} }
thread.kill
sleep 0.001 while thread.alive?

这就是我终止线程中的线程的方式。

相关内容

  • 没有找到相关文章

最新更新