ACE 8.0.1
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Protected Attributes | Private Member Functions | List of all members
ACE_Condition< ACE_Thread_Mutex > Class Reference

ACE_Condition template specialization written using ACE_Mutexes. This allows threads to block until shared data changes state. A condition variable enables threads to atomically block and test the condition under the protection of a mutual exclu- sion lock (mutex) until the condition is satisfied. That is, the mutex must have been held by the thread before calling wait or signal on the condition. If the condition is false, a thread blocks on a condition variable and atomically releases the mutex that is waiting for the condition to change. If another thread changes the condition, it may wake up waiting threads by signaling the associated condition variable. The waiting threads, upon awakening, reacquire the mutex and re-evaluate the condition. More...

#include <Condition_Thread_Mutex.h>

Collaboration diagram for ACE_Condition< ACE_Thread_Mutex >:
Collaboration graph
[legend]

Public Member Functions

 ACE_Condition (ACE_Thread_Mutex &m, const ACE_TCHAR *name=0, void *arg=0)
 Initialize the condition variable.
 
 ACE_Condition (ACE_Thread_Mutex &m, const ACE_Condition_Attributes &attributes, const ACE_TCHAR *name=0, void *arg=0)
 Initialize the condition variable.
 
 ~ACE_Condition ()
 Implicitly destroy the condition variable.
 
int remove ()
 
int wait (const ACE_Time_Value *abstime)
 
int wait ()
 Block on condition.
 
int wait (ACE_Thread_Mutex &mutex, const ACE_Time_Value *abstime=0)
 
int signal ()
 Signal one waiting thread.
 
int broadcast ()
 Signal all waiting threads.
 
ACE_Thread_Mutexmutex ()
 Returns a reference to the underlying mutex;.
 
void dump () const
 Dump the state of an object.
 

Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks.
 

Protected Attributes

ACE_cond_t cond_
 Condition variable.
 
ACE_Thread_Mutexmutex_
 Reference to mutex lock.
 
bool removed_
 

Private Member Functions

void operator= (const ACE_Condition< ACE_Thread_Mutex > &)=delete
 
 ACE_Condition (const ACE_Condition< ACE_Thread_Mutex > &)=delete
 

Detailed Description

ACE_Condition template specialization written using ACE_Mutexes. This allows threads to block until shared data changes state. A condition variable enables threads to atomically block and test the condition under the protection of a mutual exclu- sion lock (mutex) until the condition is satisfied. That is, the mutex must have been held by the thread before calling wait or signal on the condition. If the condition is false, a thread blocks on a condition variable and atomically releases the mutex that is waiting for the condition to change. If another thread changes the condition, it may wake up waiting threads by signaling the associated condition variable. The waiting threads, upon awakening, reacquire the mutex and re-evaluate the condition.

Constructor & Destructor Documentation

◆ ACE_Condition() [1/3]

Initialize the condition variable.

◆ ACE_Condition() [2/3]

ACE_Condition< ACE_Thread_Mutex >::ACE_Condition ( ACE_Thread_Mutex & m,
const ACE_Condition_Attributes & attributes,
const ACE_TCHAR * name = 0,
void * arg = 0 )

Initialize the condition variable.

◆ ~ACE_Condition()

Implicitly destroy the condition variable.

◆ ACE_Condition() [3/3]

Member Function Documentation

◆ broadcast()

int ACE_Condition< ACE_Thread_Mutex >::broadcast ( )

Signal all waiting threads.

◆ dump()

void ACE_Condition< ACE_Thread_Mutex >::dump ( ) const

Dump the state of an object.

◆ mutex()

Returns a reference to the underlying mutex;.

◆ operator=()

◆ remove()

int ACE_Condition< ACE_Thread_Mutex >::remove ( )
inline

Explicitly destroy the condition variable. Note that only one thread should call this method since it doesn't protect against race conditions.

◆ signal()

Signal one waiting thread.

◆ wait() [1/3]

Block on condition.

◆ wait() [2/3]

int ACE_Condition< ACE_Thread_Mutex >::wait ( ACE_Thread_Mutex & mutex,
const ACE_Time_Value * abstime = 0 )

Block on condition or until absolute time-of-day has passed. If abstime == 0 use "blocking" wait() semantics on the mutex passed as a parameter (this is useful if you need to store the <Condition> in shared memory). Else, if abstime != 0 and the call times out before the condition is signaled <wait> returns -1 and sets errno to ETIME.

◆ wait() [3/3]

int ACE_Condition< ACE_Thread_Mutex >::wait ( const ACE_Time_Value * abstime)

Block on condition, or until absolute time-of-day has passed. If abstime == 0 use "blocking" wait semantics. Else, if abstime != 0 and the call times out before the condition is signaled wait() returns -1 and sets errno to ETIME.

Member Data Documentation

◆ ACE_ALLOC_HOOK_DECLARE

ACE_Condition< ACE_Thread_Mutex >::ACE_ALLOC_HOOK_DECLARE

Declare the dynamic allocation hooks.

◆ cond_

Condition variable.

◆ mutex_

Reference to mutex lock.

◆ removed_

bool ACE_Condition< ACE_Thread_Mutex >::removed_
protected

Keeps track of whether remove() has been called yet to avoid multiple remove() calls, e.g., explicitly and implicitly in the destructor. This flag isn't protected by a lock, so make sure that you don't have multiple threads simultaneously calling remove() on the same object, which is a bad idea anyway...


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