class Mongo::Semaphore

This is a semaphore implementation essentially encapsulating the sample code at ruby-doc.org/stdlib-2.0.0/libdoc/thread/rdoc/ConditionVariable.html.

@api private

Public Class Methods

new() click to toggle source
# File lib/mongo/semaphore.rb, line 21
def initialize
  @lock = Mutex.new
  @cv = ConditionVariable.new
end

Public Instance Methods

broadcast() click to toggle source
# File lib/mongo/semaphore.rb, line 34
def broadcast
  @lock.synchronize do
    @cv.broadcast
  end
end
signal() click to toggle source
# File lib/mongo/semaphore.rb, line 40
def signal
  @lock.synchronize do
    @cv.signal
  end
end
wait(timeout = nil) click to toggle source

Waits for the semaphore to be signaled up to timeout seconds. If semaphore is not signaled, returns after timeout seconds.

# File lib/mongo/semaphore.rb, line 28
def wait(timeout = nil)
  @lock.synchronize do
    @cv.wait(@lock, timeout)
  end
end