Sha256: 47e985ca48970105481252dd06373f66a134f96ab1585261992766d12a4c20fa

Contents?: true

Size: 606 Bytes

Versions: 3

Compression:

Stored size: 606 Bytes

Contents

class Worker {
  def initialize: @name supervisor: @supervisor
  def work! {
    Thread sleep: 0.5
    @supervisor @@ done: @name
  }
}

class Supervisor {
  def initialize: @amount {
    @done = []
    @workers = Proxies DistributingProxy new: $ (1..@amount) map: |i| { Worker new: i supervisor: self }
  }

  def start {
    "Starting: #{(0..@amount) to_a inspect}" println
    @amount times: {
      @workers @@ work!
    }
  }

  def done: worker {
    @done << worker
    if: (@done size == @amount) then: {
      "Done: #{@done inspect}" println
    }
  }
}

Supervisor new: 10 . start
Console readln

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fancy-0.10.0 examples/distributing_proxy.fy
fancy-0.9.0 examples/distributing_proxy.fy
fancy-0.8.0 examples/distributing_proxy.fy