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 24
def initialize
  @lock = Mutex.new
  @cv = ::ConditionVariable.new
end

Public Instance Methods

broadcast() click to toggle source
# File lib/mongo/semaphore.rb, line 37
def broadcast
  @lock.synchronize do
    @cv.broadcast
  end
end
signal() click to toggle source
# File lib/mongo/semaphore.rb, line 43
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 31
def wait(timeout = nil)
  @lock.synchronize do
    @cv.wait(@lock, timeout)
  end
end