殺死一個執行緒后,創建新執行緒似乎靜默失敗。
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
最后一個執行緒靜默失敗。
如何殺死一個執行緒并創建一個新執行緒?
在 ruby?? 2.6.8p205 和 ruby?? 3.1.0p0 上測驗
uj5u.com熱心網友回復:
最后一個執行緒靜默失敗。
你得出錯誤的結論,它之前的執行緒不會產生輸出。如果您列印不同的值,就會變得很明顯:
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://www.uj5u.com/qianduan/498160.html
