| namespace limonp { | |
| class Condition : NonCopyable { | |
| public: | |
| explicit Condition(MutexLock& mutex) | |
| : mutex_(mutex) { | |
| XCHECK(!pthread_cond_init(&pcond_, NULL)); | |
| } | |
| ~Condition() { | |
| XCHECK(!pthread_cond_destroy(&pcond_)); | |
| } | |
| void Wait() { | |
| XCHECK(!pthread_cond_wait(&pcond_, mutex_.GetPthreadMutex())); | |
| } | |
| void Notify() { | |
| XCHECK(!pthread_cond_signal(&pcond_)); | |
| } | |
| void NotifyAll() { | |
| XCHECK(!pthread_cond_broadcast(&pcond_)); | |
| } | |
| private: | |
| MutexLock& mutex_; | |
| pthread_cond_t pcond_; | |
| }; // class Condition | |
| } // namespace limonp | |