在杀死一个线程之后,创建新线程似乎无声地失败了。
thread = Thread.new { sleep 1; puts :ok }
sleep 2
thread = Thread.new { sleep 1; puts :ok }
sleep 2
puts "#2"
thread = Thread.new { sleep 1; puts :ok }
thread.kill
thread = Thread.new { sleep 1; puts :ok }
sleep 2
输出:
ok
ok
#2
ok
最后一条线无声地失败。
如何删除线程并创建新线程?
在红宝石2.6.8p205和红宝石3.1.0p0上测试
发布于 2022-06-29 07:47:43
最后一个线程无声地失败。
你得出了错误的结论,这是线程在没有产生输出之前。很明显,如果您打印不同的值:
thread = Thread.new { sleep 1; puts 'ok #1' }
sleep 2
thread = Thread.new { sleep 1; puts 'ok #2' }
sleep 2
puts "-----"
thread = Thread.new { sleep 1; puts 'ok #3' }
thread.kill
thread = Thread.new { sleep 1; puts 'ok #4' }
sleep 2
输出:
ok #1
ok #2
-----
ok #4
如何杀死一个线程并创建一个新线程?
你就是这么做的。倒数第二个线程实例在休眠时(甚至可能在此之前)通过thread.kill
被杀死。最后一个线程实例与往常一样工作。你的代码没有失败。
https://stackoverflow.com/questions/72791137
复制相似问题