#include <Condition.h>
Collaboration diagram for TAO_Condition< MUTEX >:
Public Types | |
typedef MUTEX | LOCK |
Useful typedef. | |
Public Member Functions | |
TAO_Condition (MUTEX &m) | |
Initialize the condition variable. | |
TAO_Condition (void) | |
~TAO_Condition (void) | |
Implicitly destroy the condition variable. | |
int | wait (const ACE_Time_Value *abstime) |
int | wait (void) |
Block on condition. | |
int | wait (MUTEX &mutex, const ACE_Time_Value *abstime=0) |
int | signal (void) |
Signal one waiting thread. | |
int | broadcast (void) |
Signal *all* waiting threads. | |
int | remove (void) |
Explicitly destroy the condition variable. | |
MUTEX * | mutex (void) |
Returns a reference to the underlying mutex_;. | |
Private Member Functions | |
void | operator= (const TAO_Condition< MUTEX > &) |
TAO_Condition (const TAO_Condition< MUTEX > &) | |
Private Attributes | |
MUTEX * | mutex_ |
Reference to mutex lock. | |
int | delete_lock_ |
A flag to indicate whether the lock needs to be deleted. | |
TAO_SYNCH_CONDITION * | cond_ |
Condition variable. |
This class differs from ACE_Condition in that it uses a TAO_SYNCH_CONDITION instead of ACE_cond_t under the hood to provide blocking.
Definition at line 43 of file Condition.h.
typedef MUTEX TAO_Condition< MUTEX >::LOCK |
TAO_BEGIN_VERSIONED_NAMESPACE_DECL TAO_Condition< MUTEX >::TAO_Condition | ( | MUTEX & | m | ) |
Initialize the condition variable.
Definition at line 16 of file Condition.cpp.
References ACE_NEW, and TAO_SYNCH_CONDITION.
00018 : mutex_ (&m), 00019 delete_lock_ (0), 00020 cond_ (0) 00021 { 00022 // @todo: Need to add the allocatore here.. 00023 ACE_NEW (this->cond_, 00024 TAO_SYNCH_CONDITION (*this->mutex_)); 00025 }
TAO_Condition< MUTEX >::TAO_Condition | ( | void | ) |
A default constructor. Since no lock is provided by the user, one will be created internally.
Definition at line 28 of file Condition.cpp.
References ACE_NEW, TAO_Condition< MUTEX >::delete_lock_, and TAO_SYNCH_CONDITION.
00029 : mutex_ (0), 00030 delete_lock_ (0), 00031 cond_ (0) 00032 00033 { 00034 // @todo: Need to add the allocatore here.. 00035 00036 ACE_NEW (this->mutex_, 00037 MUTEX); 00038 00039 this->delete_lock_ = 1; 00040 00041 ACE_NEW (this->cond_, 00042 TAO_SYNCH_CONDITION (*this->mutex_)); 00043 }
TAO_Condition< MUTEX >::~TAO_Condition | ( | void | ) |
Implicitly destroy the condition variable.
Definition at line 47 of file Condition.cpp.
References ACE_ERROR, ACE_TEXT, TAO_Condition< MUTEX >::cond_, LM_ERROR, and TAO_Condition< MUTEX >::mutex_.
00048 { 00049 if (this->remove () == -1) 00050 ACE_ERROR ((LM_ERROR, 00051 ACE_TEXT ("%p\n"), 00052 ACE_TEXT ("TAO_Condition::~TAO_Condition"))); 00053 00054 delete this->cond_; 00055 00056 if (this->delete_lock_) 00057 delete this->mutex_; 00058 }
TAO_Condition< MUTEX >::TAO_Condition | ( | const TAO_Condition< MUTEX > & | ) | [private] |
ACE_INLINE int TAO_Condition< MUTEX >::broadcast | ( | void | ) |
Signal *all* waiting threads.
Definition at line 50 of file Condition.inl.
References TAO_Condition< MUTEX >::cond_.
Referenced by TAO::Transport_Cache_Manager::~Transport_Cache_Manager().
00051 { 00052 return this->cond_->broadcast (); 00053 }
ACE_INLINE MUTEX * TAO_Condition< MUTEX >::mutex | ( | void | ) |
Returns a reference to the underlying mutex_;.
Definition at line 38 of file Condition.inl.
References TAO_Condition< MUTEX >::mutex_.
00039 { 00040 return this->mutex_; 00041 }
void TAO_Condition< MUTEX >::operator= | ( | const TAO_Condition< MUTEX > & | ) | [private] |
ACE_INLINE int TAO_Condition< MUTEX >::remove | ( | void | ) |
Explicitly destroy the condition variable.
Definition at line 32 of file Condition.inl.
References TAO_Condition< MUTEX >::cond_.
00033 { 00034 return this->cond_->remove (); 00035 }
ACE_INLINE int TAO_Condition< MUTEX >::signal | ( | void | ) |
Signal one waiting thread.
Definition at line 44 of file Condition.inl.
References TAO_Condition< MUTEX >::cond_.
Referenced by TAO::Transport_Cache_Manager::is_wakeup_useful(), and TAO::Transport_Cache_Manager::make_idle_i().
00045 { 00046 return this->cond_->signal (); 00047 }
ACE_INLINE int TAO_Condition< MUTEX >::wait | ( | 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.
Definition at line 14 of file Condition.inl.
References TAO_Condition< MUTEX >::cond_.
TAO_BEGIN_VERSIONED_NAMESPACE_DECL ACE_INLINE int TAO_Condition< MUTEX >::wait | ( | void | ) |
Block on condition.
Definition at line 8 of file Condition.inl.
References TAO_Condition< MUTEX >::cond_.
Referenced by TAO_Condition< MUTEX >::wait().
00009 { 00010 return this->cond_->wait (); 00011 }
ACE_INLINE int TAO_Condition< 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.
Definition at line 26 of file Condition.inl.
References TAO_Condition< MUTEX >::wait().
Referenced by TAO::Transport_Cache_Manager::wait_for_connection().
00027 { 00028 return this->wait (*this->mutex_, abstime); 00029 }
TAO_SYNCH_CONDITION* TAO_Condition< MUTEX >::cond_ [private] |
Condition variable.
Definition at line 105 of file Condition.h.
Referenced by TAO_Condition< MUTEX >::broadcast(), TAO_Condition< MUTEX >::remove(), TAO_Condition< MUTEX >::signal(), TAO_Condition< MUTEX >::wait(), and TAO_Condition< MUTEX >::~TAO_Condition().
int TAO_Condition< MUTEX >::delete_lock_ [private] |
A flag to indicate whether the lock needs to be deleted.
Definition at line 102 of file Condition.h.
Referenced by TAO_Condition< MUTEX >::TAO_Condition().
MUTEX* TAO_Condition< MUTEX >::mutex_ [private] |
Reference to mutex lock.
Definition at line 99 of file Condition.h.
Referenced by TAO_Condition< MUTEX >::mutex(), and TAO_Condition< MUTEX >::~TAO_Condition().