If you can read this text, it means you are not experiencing this website at its best. This website is designed for used with a standards-compliant browser.
Current version: 2.3.2
ZThreads
A platform-independent, multi-threading and synchronization library for C++
Home Documentation Downloads CVS Contact
Condition Class Reference

#include <Condition.h>

Inheritance diagram for Condition:
Waitable NonCopyable

Public Member Functions

 Condition (Lockable &l)
 
virtual ~Condition ()
 Destroy Condition object.
 
void signal ()
 
void broadcast ()
 
virtual void wait ()
 
virtual bool wait (unsigned long timeout)
 
- Public Member Functions inherited from Waitable
virtual ~Waitable ()
 Destroy a Waitable object.

 
virtual void wait ()=0
 
virtual bool wait (unsigned long timeout)=0
 

Detailed Description

Author
Eric Crahen http://www.code-foo.com
Date
<2003-07-16T14:38:59-0400>
Version
2.2.1

A Condition is a Waitable object used to block a thread until a particular condition is met. A Condition object is always used in conjunction with Lockable object. This object should be a FastMutex, Mutex, PriorityMutex or PriorityInheritanceMutex.

Condition objects are reminiscent of POSIX condition variables in several ways but are slightly different.

A Condition is not subject to spurious wakeup.

Like all Waitable objects, Conditions are sensitive to Thread::interupt() which can be used to prematurely end a wait().

See also
Thread::interupt()

Before a wait() is performed on a Condition, the associated Lockable object should have been acquire()ed. When the wait() begins, that Lockable object is release()d (wait() will atomically begin the wait and unlock the Lockable).

A thread blocked by wait() will remain so until an exception occurs, or until the thread awakened by a signal() or broadcast(). When the thread resumes execution, the associated Lockable is acquire()d before wait() returns.

Scheduling

Threads blocked on a Condition are resumed in FIFO order.

Constructor & Destructor Documentation

◆ Condition()

Condition ( Lockable l)

Create a Condition associated with the given Lockable object.

Parameters
lLockable object to associate with this Condition object.

Member Function Documentation

◆ broadcast()

void broadcast ( )

Wake all threads wait()ing on this Condition.

The associated Lockable need not have been acquire when this function is invoked.

Postcondition
all wait()ing threads, if any exist, will be awakened.

◆ signal()

void signal ( )

Wake one thread waiting on this Condition.

The associated Lockable need not have been acquire when this function is invoked.

Postcondition
a waiting thread, if any exists, will be awakened.

◆ wait() [1/2]

virtual void wait ( )
virtual

Wait for this Condition, blocking the calling thread until a signal or broadcast is received.

This operation atomically releases the associated Lockable and blocks the calling thread.

Exceptions
Interrupted_Exceptionthrown when the calling thread is interrupted. A thread may be interrupted at any time, prematurely ending any wait.
Precondition
The thread calling this method must have first acquired the associated Lockable object.
Postcondition
A thread that has resumed execution without exception (because of a signal(), broadcast() or exception) will have acquire()d the associated Lockable object before returning from a wait().
See also
Waitable::wait()

Implements Waitable.

◆ wait() [2/2]

virtual bool wait ( unsigned long  timeout)
virtual

Wait for this Condition, blocking the calling thread until a signal or broadcast is received.

This operation atomically releases the associated Lockable and blocks the calling thread.

Parameters
timeoutmaximum amount of time (milliseconds) this method could block
Returns
  • true if the Condition receives a signal or broadcast before timeout milliseconds elapse.
  • false otherwise.
Exceptions
Interrupted_Exceptionthrown when the calling thread is interrupted. A thread may be interrupted at any time, prematurely ending any wait.
Precondition
The thread calling this method must have first acquired the associated Lockable object.
Postcondition
A thread that has resumed execution without exception (because of a signal(), broadcast() or exception) will have acquire()d the associated Lockable object before returning from a wait().
See also
Waitable::wait(unsigned long timeout)

Implements Waitable.


The documentation for this class was generated from the following file: