Вызов Thread.join блокирует текущий (основной) поток. Однако, не вызывая соединение приводит к тому, что все порожденные потоки будут уничтожены при выходе из основного потока. Как порождает постоянные дочерние потоки в Ruby, не блокируя основной поток?
Вот типичное использование объединения.
for i in 1..100 do
puts "Creating thread #{i}"
t = Thread.new(i) do |j|
sleep 1
puts "Thread #{j} done"
end
t.join
end
puts "#{Thread.list.size} threads"
Это дает
Creating thread 1
Thread 1 done
Creating thread 2
Thread 2 done
...
1 threads
но я ищу как это получить
Creating thread 1
Creating thread 2
...
101 threads
Thread 1 done
Thread 2 done
...
Код выдает одинаковый вывод в Ruby 1.8.7 и 1.9.2