Task
Tasks with a Thread backend
# File lib/celluloid/tasks/task_thread.rb, line 49 def backtrace @thread.backtrace end
# File lib/celluloid/tasks/task_thread.rb, line 14 def create @thread = Celluloid.internal_pool.get do Thread.current.role = :task begin ex = @resume_queue.pop raise ex if ex.is_a?(Task::TerminatedError) yield rescue Exception => ex @exception_queue << ex ensure @yield_cond.signal end end end
# File lib/celluloid/tasks/task_thread.rb, line 35 def deliver(value) raise DeadTaskError, "cannot resume a dead task" unless @thread.alive? @yield_mutex.synchronize do @resume_queue.push(value) @yield_cond.wait(@yield_mutex) while @exception_queue.size > 0 raise @exception_queue.pop end end rescue ThreadError raise DeadTaskError, "cannot resume a dead task" end
Generated with the Darkfish Rdoc Generator 2.