2014-10-03 117 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