9
在Ruby中,Thread#run和Thread#wakup有什麼區別?線程#運行和線程#喚醒之間的區別?
RDoc指定調度程序未被調用線程#喚醒,但這是什麼意思? 喚醒的示例 vs 運行?謝謝。
編輯:
我看到Thread#wakup導致線程成爲可運行的,但如果有什麼用它,它不會執行,直到執行Thread#run(該線程反正醒來)?
請問有人請提供一個例子,叫醒有意義嗎?爲了好奇=)
在Ruby中,Thread#run和Thread#wakup有什麼區別?線程#運行和線程#喚醒之間的區別?
RDoc指定調度程序未被調用線程#喚醒,但這是什麼意思? 喚醒的示例 vs 運行?謝謝。
編輯:
我看到Thread#wakup導致線程成爲可運行的,但如果有什麼用它,它不會執行,直到執行Thread#run(該線程反正醒來)?
請問有人請提供一個例子,叫醒有意義嗎?爲了好奇=)
這裏是爲了說明這意味着什麼從here(代碼示例)的示例:
Thread.wakeup
thread = Thread.new do
Thread.stop
puts "Inside the thread block"
end
$ thread
=> #<Thread:0x100394008 sleep>
上述輸出指示新創建的線程因爲停止命令而睡着了。
$ thread.wakeup
=> #<Thread:0x100394008 run>
此輸出表明線程不再工作,並且可以運行。
$ thread.run
Inside the thread block
=> #<Thread:0x1005d9930 sleep>
現在線程繼續執行並打印出字符串。
$ thread.run
ThreadError: killed thread
Thread.run
thread = Thread.new do
Thread.stop
puts "Inside the thread block"
end
$ thread
=> #<Thread:0x100394008 sleep>
$ thread.run
Inside the thread block
=> #<Thread:0x1005d9930 sleep>
線程不僅喚醒但還繼續執行,並打印出的字符串。
$ thread.run
ThreadError: killed thread
謝謝。我發現_wakeup_會使線程變成_runnable_,但是如果它不會運行,直到有人使用_run_調度它,它會喚醒線程,它有什麼用? –
你能舉出一個例子,說明喚醒有什麼意義嗎? –
它與線程調度程序有關。這是從文檔:「注意:這不會調用調度程序,請參閱運行以獲取更多信息。」 – phoet