49 DoWait( lock.mMutex );
52 template <
typename L,
typename Pr >
53 void Wait(
L& lock, Pr predicate )
58 while ( !predicate() )
59 DoWait( lock.mMutex );
68 return DoTimedWait( lock.mMutex, xt );
71 template <
typename L,
typename Pr>
79 if (!DoTimedWait( lock.mMutex, xt ) )
89 void DoWait( M& mutex )
92 typename LockOps::LockState state;
94 LockOps::Unlock( mutex, state );
95 DoWait( state.pmutex );
96 LockOps::Lock( mutex, state );
100 bool DoTimedWait( M& mutex,
const xtime& xt )
102 typedef typename Hidden::LockOps<M> LockOps;
103 typename LockOps::LockState state;
105 LockOps::Unlock( mutex, state );
109 ret = DoTimedWait( xt, state.pmutex );
111 LockOps::Lock( mutex, state );
116 void DoWait( pthread_mutex_t* pMutex );
118 bool DoTimedWait(
const xtime& xt, pthread_mutex_t* pMutex);
120 pthread_cond_t mCondition;
125 #endif // Condition.hxx