2012-07-06 58 views
2

我正在學習ruby及其概念。我正在閱讀article上的「ruby中的線程」,其中無法區分thread.pass和thread.exit。該文章包含這兩種方法的定義如下:Thread.pass方法調用線程調度程序將執行傳遞給另一個線程。 Thread.exit方法終止當前正在運行的線程並安排另一個線程運行。ruby​​中的thread.exit和thread.pass有什麼區別?

但我很困惑,而使用這些方法。你能幫我理清一下嗎?謝謝

回答

1

Thread.pass讓位給其他待執行的線程,但最終調度程序會將執行傳回給它。 Thread.exit終止線程(並因此告訴調度程序將執行傳遞給另一個線程)。我希望這有幫助。如果沒有,請包括引起混淆的代碼。

t1 = Thread.new do 
    10.times do |i| 
    if i < 5 
     puts i 
     sleep 0.1 
     Thread.pass 
    else 
     Thread.exit 
    end 
    end 
end 

sleep 0.05 

t2 = Thread.new do 
    10.times do |i| 
    puts i 
    sleep 0.1 
    end 
end 

t1.join 
t2.join 

這將有以下的輸出:

0 
0 
1 
1 
2 
2 
3 
3 
4 
4 
5 
6 
7 
8 
9 
+0

但這是否意味着thread.exit執行後,退出線程將永遠睡眠或者在什麼時間間隔將再次調用。 – 2012-07-06 08:11:40

+0

它永遠不會再被調用。 – moritz 2012-07-06 08:17:59

+0

k ...謝謝....! – 2012-07-06 09:23:12

相關問題