class Polyphony::ConditionVariable
Implements a fiber-aware ConditionVariable
Public Class Methods
new()
click to toggle source
# File lib/polyphony/core/sync.rb, line 50 def initialize @queue = Polyphony::Queue.new end
Public Instance Methods
broadcast()
click to toggle source
# File lib/polyphony/core/sync.rb, line 66 def broadcast while (fiber = @queue.shift) fiber.schedule end end
signal()
click to toggle source
# File lib/polyphony/core/sync.rb, line 61 def signal fiber = @queue.shift fiber.schedule end
wait(mutex, _timeout = nil)
click to toggle source
# File lib/polyphony/core/sync.rb, line 54 def wait(mutex, _timeout = nil) mutex.conditional_release @queue << Fiber.current Polyphony.backend_wait_event(true) mutex.conditional_reacquire end