2014-10-03 3 views
-1

각각 10 개의 스레드로 구성된 5 개의 배열을 실행하는 다음 코드가 있습니다.매 n 밀리 초마다 결정된 양의 스레드를 실행하는 방법은 무엇입니까?

이 코드는 다른 배열에서 10 개의 스레드를 실행하기 전에 10 개의 스레드가 완료 될 때까지 기다리는 것이 문제입니다.

마지막 10 개가 완료되었는지 여부에 관계없이 n 밀리 초마다 배열을 실행하는 메서드가 필요합니다.

@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 방법을 사용하면 스레드가 완료 될 때까지 항상 기다립니다. –

+2

귀하의 문장을 구문 분석 할 수 없습니다. – sawa

+0

이 모든 페데리코와 무슨 관계가 있니? – daremkd

답변

1

Thread#join 블록이 스레드가 완료 될 때까지 차단합니다. 전화하지 마세요. sleep을 사용하면 특정 시간 (초) 동안 현재 스레드를 일시 중지 할 수 있습니다.

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

고맙습니다. 맥스. Thread # join에 대한 또 다른 개념이 있습니다. – fedehertz

관련 문제