Initial Patch of Auction House bot rev. 135
[auctionmangos.git] / dep / ACE_wrappers / ace / Condition_T.inl
blobe3b452734a23e383d320abe251f9c153870d656f
1 // -*- C++ -*-
2 //
3 // $Id: Condition_T.inl 80826 2008-03-04 14:51:23Z wotte $
5 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
7 template<class MUTEX> ACE_INLINE int
8 ACE_Condition<MUTEX>::remove (void)
10   // ACE_TRACE ("ACE_Condition<MUTEX>::remove");
12   // cond_destroy() is called in a loop if the condition variable is
13   // BUSY.  This avoids a condition where a condition is signaled and
14   // because of some timing problem, the thread that is to be signaled
15   // has called the cond_wait routine after the signal call.  Since
16   // the condition signal is not queued in any way, deadlock occurs.
18   int result = 0;
20   while ((result = ACE_OS::cond_destroy (&this->cond_)) == -1
21           && errno == EBUSY)
22     {
23       ACE_OS::cond_broadcast (&this->cond_);
24       ACE_OS::thr_yield ();
25     }
27   return result;
30 template<class MUTEX> ACE_INLINE MUTEX &
31 ACE_Condition<MUTEX>::mutex (void)
33   // ACE_TRACE ("ACE_Condition<MUTEX>::mutex");
34   return this->mutex_;
37 template <class MUTEX> ACE_INLINE int
38 ACE_Condition<MUTEX>::signal (void)
40 // ACE_TRACE ("ACE_Condition<MUTEX>::signal");
41   return ACE_OS::cond_signal (&this->cond_);
44 template <class MUTEX> ACE_INLINE int
45 ACE_Condition<MUTEX>::broadcast (void)
47 // ACE_TRACE ("ACE_Condition<MUTEX>::broadcast");
48   return ACE_OS::cond_broadcast (&this->cond_);
51 ACE_END_VERSIONED_NAMESPACE_DECL