Module: Rainbows::ActorSpawn

Includes:
ThreadSpawn
Defined in:
lib/rainbows/actor_spawn.rb

Overview

Actor concurrency model for Rubinius. We can’t seem to get message passing working right, so we’re throwing a Mutex into the mix for now. Hopefully somebody can fix things for us. Currently, this is exactly the same as the ThreadSpawn model since we don’t use the message passing capabilities of the Actor model (and even then it wouldn’t really make sense since Actors in Rubinius are just Threads underneath and our ThreadSpawn model is one layer of complexity less.

This is different from the Revactor one which is not prone to race conditions within the same process at all (since it uses Fibers).

Instance Method Summary collapse

Methods included from ThreadSpawn

#accept_loop

Methods included from WorkerYield

#worker_yield

Methods included from Base

included, #init_worker_process, #process_client, #reopen_worker_logs, #sig_receiver

Instance Method Details

#worker_loop(worker) ⇒ Object

runs inside each forked worker, this sits around and waits for connections and doesn’t die until the parent dies (or is given a INT, QUIT, or TERM signal)



22
23
24
25
26
# File 'lib/rainbows/actor_spawn.rb', line 22

def worker_loop(worker) # :nodoc:
  Rainbows::Const::RACK_DEFAULTS["rack.multithread"] = true # :(
  init_worker_process(worker)
  accept_loop(Actor)
end