メインスレッドが終了する前に、すべてのスレッドが実行されるのを待つ良い方法を見つけようとしています。
次のコードでそれを行うにはどうすればよいですか?
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です。私の乱数は、メインスレッドのほぼ最後にあるwhileループのドットとYYYで混合されています。whileループを使用しない場合、プログラムはスレッドが終了する前に終了します。