Concurrency and Modules
Thread Result Collector
Worker threads can compute independent results while the main thread waits and combines them in a predictable order.
Thread Result Collector
thread_result_collector.rb
worker_count =
results = Array.new(worker_count)
workers = worker_count.times.map do |index|
Thread.new do
base = index + 1
results[index] = base * 10
end
end
workers.each(&:join)
total = results.sum
puts "workers=#{worker_count}"
puts "results=#{results.join(",")}"
puts "total=#{total}"
worker_count =
results = Array.new(worker_count)
workers = worker_count.times.map do |index|
Thread.new do
base = index + 1
results[index] = base * 10
end
end
workers.each(&:join)
total = results.sum
puts "workers=#{worker_count}"
puts "results=#{results.join(",")}"
puts "total=#{total}"
worker_count =
results = Array.new(worker_count)
workers = worker_count.times.map do |index|
Thread.new do
base = index + 1
results[index] = base * 10
end
end
workers.each(&:join)
total = results.sum
puts "workers=#{worker_count}"
puts "results=#{results.join(",")}"
puts "total=#{total}"
thread results
Store each worker result in a fixed array slot, then join the workers before reading the final collection.