为什么退出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文档。 killKernel#exit ,它终止了Ruby脚本。

 puts "Start" loop do Thread.start do puts "Hello from thread" Thread.exit end text = gets puts "#{text}" end puts "Done"