Sha256: de8bc68d455fd4f09c2603f77235cef3f5323862e89584797b0f005ab47d8011

Contents?: true

Size: 617 Bytes

Versions: 1

Compression:

Stored size: 617 Bytes

Contents

# frozen_string_literal: true

require 'bundler/setup'
require 'polyphony'

resource_count = 0
Pool = Polyphony::ResourcePool.new(limit: 3) do
  :"resource#{resource_count += 1}"
end

def user(number)
  loop do
    move_on_after(0.2) do |scope|
      scope.when_cancelled do
        puts "#{number} (cancelled)"
      end
      
      Pool.acquire do |r|
        scope.disable
        puts "#{number} #{r.inspect} >"
        sleep(0.4 + rand * 0.2)
        puts "#{number} #{r.inspect} <"
      end
    end
  end
end

6.times do |x|
  spin { user(x) }
end

t0 = Time.now
every(10) { puts "uptime: #{Time.now - t0}" }

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
polyphony-0.19 examples/core/resource_cancel.rb