【发布时间】:2012-08-22 13:08:47
【问题描述】:
我正在尝试找出一种在主线程完成之前等待所有线程执行完毕的好方法。
如何在下面的代码中做到这一点?
threads = []
counter = 1000
lines = 0
counter.times do |i|
puts "This is index number #{i}."
end
puts "You've just seen the normal printing and serial programming.\n\n"
counter.times do |i|
Thread.new do
some_number = Random.rand(counter)
sleep 1
puts "I'm thread number #{i}. My random number is #{some_number}.\n"
lines += 1
end
end
messaged = false
while lines < 1000
puts "\nWaiting to finish.\n" unless messaged
print '.'
puts "\n" if lines == 1000
messaged = true
end
puts "\nI've printed #{lines} lines.\n"
puts "This is end of the program."
程序将我的线程号 XXX。我的随机数是 YYY,几乎在主线程结束时与 while 循环中的点混合。如果我不使用 while 循环,程序会在线程完成之前完成。
【问题讨论】:
-
counter = 1000 如代码顶部所述。
-
抱歉,没有 100% 关注。别介意我无关紧要的评论。
标签: ruby multithreading coding-style mutex fibers