File: stress_ruby_thread_pool.rb

package info (click to toggle)
ruby-concurrent 1.1.6%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 30,284 kB
  • sloc: ruby: 30,875; java: 6,117; ansic: 288; makefile: 9; sh: 6
file content (26 lines) | stat: -rwxr-xr-x 791 bytes parent folder | download | duplicates (5)
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
#!/usr/bin/env ruby

$: << File.expand_path('../../lib', __FILE__)

require 'benchmark'
require 'concurrent/executors'

COUNT = 100_000

executor = Concurrent::CachedThreadPool.new
latch = Concurrent::CountDownLatch.new

COUNT.times { executor.post{ nil } }

#COUNT.times do |i|
#  executor.post{ nil }
#  sleep(0.01) if i % 1000 == 0
#end

executor.post{ latch.count_down }
latch.wait

puts "Max length:           #{executor.max_length}" if executor.respond_to?(:max_length)
puts "Largest length:       #{executor.largest_length}" if executor.respond_to?(:largest_length)
puts "Scheduled task count: #{executor.scheduled_task_count}" if executor.respond_to?(:scheduled_task_count)
puts "Completed task count: #{executor.completed_task_count}" if executor.respond_to?(:completed_task_count)