26 Mutex() { pthread_mutex_init(&mu_,
nullptr); }
28 ~Mutex() { pthread_mutex_destroy(&mu_); }
30 inline void Lock() { pthread_mutex_lock(&mu_); }
32 inline void Unlock() { pthread_mutex_unlock(&mu_); }
34 inline bool TryLock() {
return pthread_mutex_trylock(&mu_) == 0; }
59 CondVar() { pthread_cond_init(&cv_,
nullptr); }
62 void Wait(
Mutex *mu) { pthread_cond_wait(&cv_, &mu->mu_); }
64 void Signal() { pthread_cond_signal(&cv_); }
87 return counter_ == 0u;
98 while (counter_ != 0u) {
114 RwMutex() { pthread_rwlock_init(&mu_,
nullptr); }
120 inline void Unlock() { pthread_rwlock_unlock(&mu_); }
126 pthread_rwlock_t mu_;
BlockingCounter & operator=(const BlockingCounter &)=delete
BlockingCounter(size_t cnt)
BlockingCounter(const BlockingCounter &)=delete
CondVar(const CondVar &)=delete
CondVar & operator=(const CondVar &)=delete
MutexLock & operator=(const MutexLock &)=delete
MutexLock(const MutexLock &)=delete
Mutex(const Mutex &)=delete
Mutex & operator=(const Mutex &)=delete
ReaderMutexLock(const ReaderMutexLock &)=delete
ReaderMutexLock(RwMutex *mu)
ReaderMutexLock & operator=(const ReaderMutexLock &)=delete
RwMutex & operator=(const RwMutex &)=delete
RwMutex(const RwMutex &)=delete
WriterMutexLock & operator=(const WriterMutexLock &)=delete
WriterMutexLock(RwMutex *mu)
WriterMutexLock(const WriterMutexLock &)=delete