48 if (pthread_cond_init(&_cond,
nullptr)) {
51 if (pthread_mutex_init(&_lock,
nullptr)) {
57 pthread_cond_destroy(&_cond);
58 pthread_mutex_destroy(&_lock);
64 pthread_cond_signal(&_cond);
70 while (_waits > _signals) {
71 pthread_cond_wait(&_cond, &_lock);
107 if (_wanted > _requested) {
108 return &_wait[_requested++ % 2];
115 _wait[_waited++ % 2].
wait();
#define w_assert1(x)
Level 1 should not add significant extra time.
Definition: w_base.h:198
long _waited
Definition: condex.h:94
void wait()
Definition: condex.h:113
long _requested
Definition: condex.h:90
condex * take_one()
Definition: condex.h:106
~condex_pair()
Definition: condex.h:100
pthread_mutex_t _lock
Definition: condex.h:40
long _signals
Definition: condex.h:42
void wait()
Definition: condex.h:67
pthread_cond_t _cond
Definition: condex.h:38
void signal()
Definition: condex.h:61
condex_pair()
Definition: condex.h:96
condex()
Definition: condex.h:46
long _waits
Definition: condex.h:44
~condex()
Definition: condex.h:56
long _wanted
Definition: condex.h:92
void please_take_one()
Definition: condex.h:102
#define CRITICAL_SECTION(name, lock)
Definition: critical_section.h:75