summaryrefslogtreecommitdiff
path: root/benchmark/vm_thread_sized_queue4.yml
blob: 2af8ea4ebe52c369bf6f9c26c4f3489dfc618b4f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
benchmark:
  vm_thread_sized_queue4: |
    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)
loop_count: 1