25 #ifndef SYNC_STATUSHANDLER_H
26 #define SYNC_STATUSHANDLER_H
57 template<
class Status_t>
75 void Post(Status_t newStatus) {
78 pthread_cond_broadcast(&
cond);
84 Status_t
Get()
const {
100 pthread_cond_broadcast(&
cond);
106 template <
class Comparator>
109 if (comp(oldStatus,
status)) {
111 pthread_cond_broadcast(&
cond);
130 template<
class Comparator>
133 while (comp(oldStatus,
status)) { pthread_cond_wait(&
cond, &
lock); }
147 if (oldStatus ==
status) {
149 pthread_cond_broadcast(&
cond);
155 template<
class Comparator>
158 if (comp(oldStatus,
status)) {
160 pthread_cond_broadcast(&
cond);
173 pthread_cond_broadcast(&
cond);
#define ENSURE_ABORT(exp,...)
ScopeMutex(pthread_mutex_t &l)
Status_t CompareAndWait(Status_t oldStatus) const
Status_t ComparePostAndWait(Status_t oldStatus, Status_t newStatus)
void CompareWaitAndPost(Status_t theStatus, Status_t newStatus)
bool CompareAndPost(Status_t oldStatus, Status_t newStatus, Comparator comp)
StatusHandler(Status_t initialStatus)
Status_t ComparePostAndWait(Status_t oldStatus, Status_t newStatus, Comparator comp)
bool CompareAndPost(Status_t oldStatus, Status_t newStatus)
Status_t CompareAndWait(Status_t oldStatus, Comparator comp) const
A reentrant lock implementation.
void Post(Status_t newStatus)