summaryrefslogtreecommitdiff
path: root/benchmark/vm_thread_sized_queue4.rb
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) 
close