为什么退出Ruby线程会杀死我的整个程序?
我有这段代码:
puts "Start" loop do Thread.start do puts "Hello from thread" exit end text = gets puts "#{text}" end puts "Done"
我期望看到“开始”后跟“线程中的Hello”,然后我可以输入回复给我的输入。 相反,我得到“开始”和“来自线程的Hello”,然后程序退出。
从exit
文档:
终止thr并调度另一个要运行的线程。 如果此线程已被标记为被杀死,则exit返回Thread。 如果这是主线程或最后一个线程,则退出进程。
但我以为我催生了一个新线程? 为什么退出我的主流程?
您正在查看Thread#exit
文档。 kill
是Kernel#exit
,它终止了Ruby脚本。
puts "Start" loop do Thread.start do puts "Hello from thread" Thread.exit end text = gets puts "#{text}" end puts "Done"