Changes to attempt to silence bcc64x
[ACE_TAO.git] / ACE / ace / Condition_T.inl
blobc919464b1adbbe058a29fca40553d78da69fc224
1 // -*- C++ -*-
2 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
4 template<class MUTEX> ACE_INLINE int
5 ACE_Condition<MUTEX>::remove ()
7   // ACE_TRACE ("ACE_Condition<MUTEX>::remove");
9   // cond_destroy() is called in a loop if the condition variable is
10   // BUSY.  This avoids a condition where a condition is signaled and
11   // because of some timing problem, the thread that is to be signaled
12   // has called the cond_wait routine after the signal call.  Since
13   // the condition signal is not queued in any way, deadlock occurs.
15   int result = 0;
17   while ((result = ACE_OS::cond_destroy (&this->cond_)) == -1
18           && errno == EBUSY)
19     {
20       ACE_OS::cond_broadcast (&this->cond_);
21       ACE_OS::thr_yield ();
22     }
24   return result;
27 template<class MUTEX> ACE_INLINE MUTEX &
28 ACE_Condition<MUTEX>::mutex ()
30   // ACE_TRACE ("ACE_Condition<MUTEX>::mutex");
31   return this->mutex_;
34 template <class MUTEX> ACE_INLINE int
35 ACE_Condition<MUTEX>::signal ()
37 // ACE_TRACE ("ACE_Condition<MUTEX>::signal");
38   return ACE_OS::cond_signal (&this->cond_);
41 template <class MUTEX> ACE_INLINE int
42 ACE_Condition<MUTEX>::broadcast ()
44 // ACE_TRACE ("ACE_Condition<MUTEX>::broadcast");
45   return ACE_OS::cond_broadcast (&this->cond_);
48 ACE_END_VERSIONED_NAMESPACE_DECL