1 #ifndef SRC_NODE_MUTEX_H_ 2 #define SRC_NODE_MUTEX_H_ 16 template <
typename Traits>
53 mutable typename Traits::MutexT mutex_;
57 template <
typename Traits>
66 inline void Wait(
const ScopedLock& scoped_lock);
69 typename Traits::CondT cond_;
78 return uv_cond_init(cond);
82 return uv_mutex_init(mutex);
86 uv_cond_broadcast(cond);
90 uv_cond_destroy(cond);
98 uv_cond_wait(cond, mutex);
102 uv_mutex_destroy(mutex);
106 uv_mutex_lock(mutex);
110 uv_mutex_unlock(mutex);
114 template <
typename Traits>
116 CHECK_EQ(0, Traits::cond_init(&cond_));
119 template <
typename Traits>
121 Traits::cond_destroy(&cond_);
124 template <
typename Traits>
126 Traits::cond_broadcast(&cond_);
129 template <
typename Traits>
131 Traits::cond_signal(&cond_);
134 template <
typename Traits>
136 Traits::cond_wait(&cond_, &scoped_lock.mutex_.mutex_);
139 template <
typename Traits>
141 CHECK_EQ(0, Traits::mutex_init(&mutex_));
144 template <
typename Traits>
146 Traits::mutex_destroy(&mutex_);
149 template <
typename Traits>
151 Traits::mutex_lock(&mutex_);
154 template <
typename Traits>
156 Traits::mutex_unlock(&mutex_);
159 template <
typename Traits>
162 Traits::mutex_lock(&mutex_.mutex_);
165 template <
typename Traits>
169 template <
typename Traits>
171 Traits::mutex_unlock(&mutex_.mutex_);
174 template <
typename Traits>
176 : mutex_(scoped_lock.mutex_) {
177 Traits::mutex_unlock(&mutex_.mutex_);
180 template <
typename Traits>
182 Traits::mutex_lock(&mutex_.mutex_);
187 #endif // SRC_NODE_MUTEX_H_
static void mutex_lock(MutexT *mutex)
static void mutex_destroy(MutexT *mutex)
static int cond_init(CondT *cond)
ScopedLock(const MutexBase &mutex)
void Broadcast(const ScopedLock &)
static void mutex_unlock(MutexT *mutex)
friend class ConditionVariableBase
static void cond_broadcast(CondT *cond)
static void cond_wait(CondT *cond, MutexT *mutex)
void Wait(const ScopedLock &scoped_lock)
typename MutexBase< LibuvMutexTraits >::ScopedLock ScopedLock
void Signal(const ScopedLock &)
static void cond_signal(CondT *cond)
friend class ScopedUnlock
static void cond_destroy(CondT *cond)
ScopedUnlock(const ScopedLock &scoped_lock)
static int mutex_init(MutexT *mutex)