• Home
  • Raw
  • Download

Lines Matching refs:barrier

386 int uv_barrier_init(uv_barrier_t* barrier, unsigned int count) {  in uv_barrier_init()  argument
389 barrier->n = count; in uv_barrier_init()
390 barrier->count = 0; in uv_barrier_init()
392 err = uv_mutex_init(&barrier->mutex); in uv_barrier_init()
396 err = uv_sem_init(&barrier->turnstile1, 0); in uv_barrier_init()
400 err = uv_sem_init(&barrier->turnstile2, 1); in uv_barrier_init()
407 uv_sem_destroy(&barrier->turnstile1); in uv_barrier_init()
409 uv_mutex_destroy(&barrier->mutex); in uv_barrier_init()
415 void uv_barrier_destroy(uv_barrier_t* barrier) { in uv_barrier_destroy() argument
416 uv_sem_destroy(&barrier->turnstile2); in uv_barrier_destroy()
417 uv_sem_destroy(&barrier->turnstile1); in uv_barrier_destroy()
418 uv_mutex_destroy(&barrier->mutex); in uv_barrier_destroy()
422 int uv_barrier_wait(uv_barrier_t* barrier) { in uv_barrier_wait() argument
425 uv_mutex_lock(&barrier->mutex); in uv_barrier_wait()
426 if (++barrier->count == barrier->n) { in uv_barrier_wait()
427 uv_sem_wait(&barrier->turnstile2); in uv_barrier_wait()
428 uv_sem_post(&barrier->turnstile1); in uv_barrier_wait()
430 uv_mutex_unlock(&barrier->mutex); in uv_barrier_wait()
432 uv_sem_wait(&barrier->turnstile1); in uv_barrier_wait()
433 uv_sem_post(&barrier->turnstile1); in uv_barrier_wait()
435 uv_mutex_lock(&barrier->mutex); in uv_barrier_wait()
436 serial_thread = (--barrier->count == 0); in uv_barrier_wait()
438 uv_sem_wait(&barrier->turnstile1); in uv_barrier_wait()
439 uv_sem_post(&barrier->turnstile2); in uv_barrier_wait()
441 uv_mutex_unlock(&barrier->mutex); in uv_barrier_wait()
443 uv_sem_wait(&barrier->turnstile2); in uv_barrier_wait()
444 uv_sem_post(&barrier->turnstile2); in uv_barrier_wait()