class Async::Condition
@public Since *Async v1*.
A synchronization primitive, which allows fibers to wait until a particular condition is (edge) triggered.
def empty?
def empty? @ready.num_waiting.zero? end
def exchange
def exchange ready = @ready @ready = ::Thread::Queue.new return ready end
def initialize
def initialize @ready = ::Thread::Queue.new end
def signal(value = nil)
Signal to a given task that it should resume operations.
def signal(value = nil) return if empty? ready = self.exchange ready.num_waiting.times do ready.push(value) end ready.close return nil end
def wait
Queue up the current fiber and wait on yielding the task.
def wait @ready.pop end
def waiting?
def waiting? !self.empty? end