Sha256: 58e2525e6e362b5a2a3825a0c1388da7800c307ac3535d54e5a9ea794aa2861b
Contents?: true
Size: 889 Bytes
Versions: 2
Compression:
Stored size: 889 Bytes
Contents
# frozen_string_literal: true require_relative '../lib/uringmachine' @machine = UM.new @counter = 0 @fiber_count = 0 def start_fiber @fiber_count += 1 @machine.spin do max_count = @counter + rand(1000) puts "Start #{Fiber.current} #{max_count - @counter}" loop do @machine.sleep 0.001 @counter += 1 break if @counter >= max_count end puts "Stop #{Fiber.current}" ensure @fiber_count -= 1 end end t0 = Time.now MAX_FIBERS = 20 MAX_TIME = 10 loop do @machine.sleep 0.1 puts "pending: #{@machine.pending_count}" break if (Time.now - t0) > MAX_TIME start_fiber while @fiber_count < MAX_FIBERS end t1 = Time.now elapsed = t1 - t0 rate = @counter / elapsed puts "Did #{@counter} ops in #{elapsed} seconds (#{rate} ops/s)" puts "Waiting for fibers... (#{@fiber_count})" while @fiber_count > 0 @machine.sleep 0.1 end puts "Done"
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
uringmachine-0.5.1 | examples/snooze.rb |
uringmachine-0.5 | examples/snooze.rb |