我有这段代码:
puts "Start"
loop do
Thread.start do
puts "Hello from thread"
exit
end
text = gets
puts "#{text}"
end
puts "Done"
我期望看到"开始"接下来是"你好来自线程"然后我可以输入会回复给我的输入。相反,我得到了#34;开始"和#34;你好来自线程"然后程序退出。
来自exit
的文档:
终止thr并安排另一个要运行的线程。如果这个帖子 已被标记为被杀死,exit返回Thread。如果是这样的话 主线程或最后一个线程退出进程。
但我以为我催生了一个新线程?为什么它会退出我的主要流程?
答案 0 :(得分:8)
您正在查看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"