Sha256: 868824cd5ea08335208643f91bb7caa39d4f72b14620971ac25f4c57b53c1ac8

Contents?: true

Size: 440 Bytes

Versions: 79

Compression:

Stored size: 440 Bytes

Contents

# frozen_string_literal: true

require 'bundler/setup'
require 'polyphony'

def do_work(client)
  result = yield
  client << result
rescue Exception => e
  client << e
end

$worker = Thread.new do
  Fiber.current.tag = :worker
  loop do
    (client, block) = receive
    do_work(client, &block)
  end
end

def process(&block)
  $worker.main_fiber << [Fiber.current, block]
  receive
end

sleep 0.1

p process { 1 + 1 }
p process { 42 ** 2 }

Version data entries

79 entries across 79 versions & 1 rubygems

Version Path
polyphony-1.6 examples/core/worker-thread.rb
polyphony-1.5 examples/core/worker-thread.rb
polyphony-1.4 examples/core/worker-thread.rb
polyphony-1.3 examples/core/worker-thread.rb
polyphony-1.2.1 examples/core/worker-thread.rb
polyphony-1.2 examples/core/worker-thread.rb
polyphony-1.1.1 examples/core/worker-thread.rb
polyphony-1.1 examples/core/worker-thread.rb
polyphony-1.0.2 examples/core/worker-thread.rb
polyphony-1.0.1 examples/core/worker-thread.rb
polyphony-1.0 examples/core/worker-thread.rb
polyphony-0.99.6 examples/core/worker-thread.rb
polyphony-0.99.5 examples/core/worker-thread.rb
polyphony-0.99.4 examples/core/worker-thread.rb
polyphony-0.99.3 examples/core/worker-thread.rb
polyphony-0.99.2 examples/core/worker-thread.rb
polyphony-0.99.1 examples/core/worker-thread.rb
polyphony-0.99 examples/core/worker-thread.rb
polyphony-0.98 examples/core/worker-thread.rb
polyphony-0.97 examples/core/worker-thread.rb