Lines Matching refs:barrier
82 int pthread_barrier_destroy(pthread_barrier_t *barrier) in pthread_barrier_destroy() argument
86 if (!barrier) in pthread_barrier_destroy()
90 result = pthread_mutex_lock(&(barrier->mutex)); in pthread_barrier_destroy()
95 if (barrier->count != 0) in pthread_barrier_destroy()
97 pthread_mutex_unlock(&(barrier->mutex)); in pthread_barrier_destroy()
102 result = pthread_mutex_unlock(&(barrier->mutex)); in pthread_barrier_destroy()
108 result = pthread_mutex_destroy(&(barrier->mutex)); in pthread_barrier_destroy()
113 result = pthread_cond_destroy(&(barrier->cond)); in pthread_barrier_destroy()
151 int pthread_barrier_init(pthread_barrier_t *barrier, in pthread_barrier_init() argument
155 if (!barrier) in pthread_barrier_init()
162 barrier->count = count; in pthread_barrier_init()
163 pthread_cond_init(&(barrier->cond), NULL); in pthread_barrier_init()
164 pthread_mutex_init(&(barrier->mutex), NULL); in pthread_barrier_init()
197 int pthread_barrier_wait(pthread_barrier_t *barrier) in pthread_barrier_wait() argument
200 if (!barrier) in pthread_barrier_wait()
203 result = pthread_mutex_lock(&(barrier->mutex)); in pthread_barrier_wait()
207 if (barrier->count == 0) in pthread_barrier_wait()
211 barrier->count -= 1; in pthread_barrier_wait()
212 if (barrier->count == 0) /* broadcast condition */ in pthread_barrier_wait()
213 pthread_cond_broadcast(&(barrier->cond)); in pthread_barrier_wait()
215 pthread_cond_wait(&(barrier->cond), &(barrier->mutex)); in pthread_barrier_wait()
218 pthread_mutex_unlock(&(barrier->mutex)); in pthread_barrier_wait()