blob: a9b7d80ec0c4c40ee0041af0f042af31818ba5ab (
plain)
1234567891011121314151617181920212223242526 | require 'thread' # many producers, many consumers nr = 1_000_000 n = 10 m = 10 q = Thread::SizedQueue.new(100) consumers = n.times.map do Thread.new do while q.pop # consuming end end end producers = m.times.map do Thread.new do while nr > 0 q.push true nr -= 1 end end end producers.each(&:join) n.times { q.push nil } consumers.each(&:join)
|