class LightIO::Library::Thread::ConditionVariable

Public Class Methods

new() click to toggle source
# File lib/lightio/library/thread.rb, line 291
def initialize
  @queue = LightIO::Library::Queue.new
end

Public Instance Methods

broadcast() click to toggle source
# File lib/lightio/library/thread.rb, line 296
def broadcast
  signal until @queue.num_waiting == 0
  self
end
signal() click to toggle source
# File lib/lightio/library/thread.rb, line 301
def signal
  @queue << true unless @queue.num_waiting == 0
  self
end
wait(mutex, timeout=nil) click to toggle source
# File lib/lightio/library/thread.rb, line 306
def wait(mutex, timeout=nil)
  mutex.unlock
  begin
    LightIO::Library::Timeout.timeout(timeout) do
      @queue.pop
    end
  rescue Timeout::Error
    nil
  end
  mutex.lock
  self
end