2014-10-03 44 views
-1

我有以下代碼,每個執行10個線程的5個數組。如何每n毫秒執行確定數量的線程?

問題是,此代碼等待10個線程完成,然後在其他數組中執行10個以上的線程。

我想要一個方法,每n毫秒執行一次數組,無論最後10個是否完成。

@idx = 0 

begin 
    @threads = Array.new 
    10.times do 
     @threads << Thread.new{do something} 
    end 

    @threads.each{|t| t.join} 
    @idx += 1 
end until @idx == 5 
+0

嗯,你使用的join方法,它總是等待,直到線程完成。 – 2014-10-03 19:03:57

+2

我無法解析你的句子。 – sawa 2014-10-03 19:19:29

+0

你想用這個Federico做什麼? – daremkd 2014-10-03 20:05:44

回答

1

Thread#join直到線程結束爲止。別叫它。使用sleep將當前線程暫停一定的秒數。

5.times do |idx| 
    10.times { Thread.new { something... } } 
    sleep n/1000.0 
end 
+0

非常感謝,Max。我有另外一個關於Thread#join的概念。 – fedehertz 2014-10-03 21:32:42