Lines Matching refs:_semaphore
56 if (int error = ::pthread_mutex_init (&_semaphore.mutex, 0))
59 if (int error = ::pthread_cond_init (&_semaphore.nonZero, 0))
63 _semaphore.count = value;
64 _semaphore.numWaiting = 0;
70 int error = ::pthread_cond_destroy (&_semaphore.nonZero);
72 error = ::pthread_mutex_destroy (&_semaphore.mutex);
80 ::pthread_mutex_lock (&_semaphore.mutex);
82 _semaphore.numWaiting++;
84 while (_semaphore.count == 0)
86 if (int error = ::pthread_cond_wait (&_semaphore.nonZero,
87 &_semaphore.mutex))
89 ::pthread_mutex_unlock (&_semaphore.mutex);
96 _semaphore.numWaiting--;
97 _semaphore.count--;
99 ::pthread_mutex_unlock (&_semaphore.mutex);
106 ::pthread_mutex_lock (&_semaphore.mutex);
108 if (_semaphore.count == 0)
110 ::pthread_mutex_unlock (&_semaphore.mutex);
115 _semaphore.count--;
116 ::pthread_mutex_unlock (&_semaphore.mutex);
125 ::pthread_mutex_lock (&_semaphore.mutex);
127 if (_semaphore.numWaiting > 0)
129 if (int error = ::pthread_cond_signal (&_semaphore.nonZero))
131 ::pthread_mutex_unlock (&_semaphore.mutex);
138 _semaphore.count++;
139 ::pthread_mutex_unlock (&_semaphore.mutex);
146 ::pthread_mutex_lock (&_semaphore.mutex);
147 int value = _semaphore.count;
148 ::pthread_mutex_unlock (&_semaphore.mutex);