2012-10-06 107 views

回答

3

這裏是爲了說明這意味着什麼從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 
+2

謝謝。我發現_wakeup_會使線程變成_runnable_,但是如果它不會運行,直到有人使用_run_調度它,它會喚醒線程,它有什麼用? –

+3

你能舉出一個例子,說明喚醒有什麼意義嗎? –

+0

它與線程調度程序有關。這是從文檔:「注意:這不會調用調度程序,請參閱運行以獲取更多信息。」 – phoet