Class

ConditionVariable

Inheritance
< Object

ConditionVariable objects augment class Mutex. Using condition variables, it is possible to suspend while in the middle of a critical section until a resource becomes available.

Example:

  require 'thread'

  mutex = Mutex.new
  resource = ConditionVariable.new

  a = Thread.new {
    mutex.synchronize {
      # Thread 'a' now needs the resource
      resource.wait(mutex)
      # 'a' can now have the resource
    }
  }

  b = Thread.new {
    mutex.synchronize {
      # Thread 'b' has finished using the resource
      resource.signal
    }
  }

Methods

Class

Visibility Signature
public new ()

Instance

Visibility Signature
public broadcast ()
public signal ()
public wait (mutex)

Class Method Detail

new()

Instance Method Detail

broadcast()

Wakes up all threads waiting for this lock.

signal()

Wakes up the first thread in line waiting for this lock.

wait(mutex)

Releases the lock held in mutex and waits; reacquires the lock on wakeup.