1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
def create_async_blocking_actor(task_klass)
actor_klass = Class.new(StackBlocker) do
task_class task_klass
end
actor = actor_system.within do
actor_klass.new(threads)
end
actor.async.blocking
end
def create_thread_with_role(threads, role)
resume = Queue.new
thread = actor_system.get_thread do
resume.pop # to avoid race for 'thread' variable
thread.role = role
threads << thread
StackWaiter.forever
end
resume << nil # to avoid race for 'thread' variable
thread
end
|