class Concurrent::ProcessingActor

A new implementation of actor which also simulates the process, therefore it can be used in the same way as Erlang’s actors but without occupying thread. A tens of thousands ProcessingActors can run at the same time sharing a thread pool. @example

# Runs on a pool, does not consume 50_000 threads
actors = 50_000.times.map do |i|
  Concurrent::ProcessingActor.act(i) { |a, i| a.receive.then_on(:fast, i) { |m, i| m + i } }
end

actors.each { |a| a.tell 1 }
values = actors.map(&:termination).map(&:value)
values[0,5]                                        # => [1, 2, 3, 4, 5]
values[-5, 5]                                      # => [49996, 49997, 49998, 49999, 50000]

@!macro warn.edge