diff --git a/include/uv.h b/include/uv.h index 8a2001b7..2eab59ce 100644 --- a/include/uv.h +++ b/include/uv.h @@ -2199,6 +2199,19 @@ UV_EXTERN int uv_cond_init(uv_cond_t* cond); UV_EXTERN void uv_cond_destroy(uv_cond_t* cond); UV_EXTERN void uv_cond_signal(uv_cond_t* cond); UV_EXTERN void uv_cond_broadcast(uv_cond_t* cond); + +/* + * Same goes for the barrier functions. Note that uv_barrier_wait() returns + * a value > 0 to an arbitrarily chosen "serializer" thread to facilitate + * cleanup, i.e.: + * + * if (uv_barrier_wait(&barrier) > 0) + * uv_barrier_destroy(&barrier); + */ +UV_EXTERN int uv_barrier_init(uv_barrier_t* barrier, unsigned int count); +UV_EXTERN void uv_barrier_destroy(uv_barrier_t* barrier); +UV_EXTERN int uv_barrier_wait(uv_barrier_t* barrier); + /* Waits on a condition variable without a timeout. * * Note: @@ -2217,10 +2230,6 @@ UV_EXTERN void uv_cond_wait(uv_cond_t* cond, uv_mutex_t* mutex); UV_EXTERN int uv_cond_timedwait(uv_cond_t* cond, uv_mutex_t* mutex, uint64_t timeout); -UV_EXTERN int uv_barrier_init(uv_barrier_t* barrier, unsigned int count); -UV_EXTERN void uv_barrier_destroy(uv_barrier_t* barrier); -UV_EXTERN int uv_barrier_wait(uv_barrier_t* barrier); - /* Runs a function once and only once. Concurrent calls to uv_once() with the * same guard will block all callers except one (it's unspecified which one). * The guard should be initialized statically with the UV_ONCE_INIT macro.