NAME
pthread_cond_init
,
pthread_cond_destroy
,
pthread_cond_wait
,
pthread_cond_timedwait
,
pthread_cond_broadcast
,
pthread_cond_signal
—
block and unblock threads with
condition variables
SYNOPSIS
/* -lpthread */
#include <pthread.h>
int
pthread_cond_init
(pthread_cond_t
*cond, const pthread_condattr_t *attr);
int
pthread_cond_destroy
(pthread_cond_t
*cond);
int
pthread_cond_wait
(pthread_cond_t
*cond, pthread_mutex_t *mutex);
int
pthread_cond_timedwait
(pthread_cond_t
*cond, pthread_mutex_t *mutex,
const struct timespec *abstime);
int
pthread_cond_broadcast
(pthread_cond_t
*cond);
int
pthread_cond_signal
(pthread_cond_t
*cond);
DESCRIPTION
The
pthread_cond_init
()
function creates a new condition variable with attributes specified by
attr. If attr is
NULL
, the default attributes are used.
The
pthread_cond_destroy
()
function frees the resources associated with the condition variable
cond.
The
pthread_cond_wait
()
function atomically blocks the current thread by waiting on the condition
variable cond, and unlocks the mutex specified by
mutex. The waiting thread unblocks only after another
thread calls pthread_cond_broadcast
() or
pthread_cond_signal
() with the same condition
variable. The
pthread_cond_timedwait
()
function does the same, but returns after the system time reaches
abstime. In all cases, both functions then reacquire
the lock on mutex before returning.
The
pthread_cond_broadcast
()
function unblocks all threads waiting for the condition variable
cond. The
pthread_cond_signal
()
function unblocks at least one thread waiting for the condition variable
cond.
RETURN VALUES
These functions return zero for success and positive error numbers for failure.
ERRORS
pthread_cond_init
() fails if:
- [
EINVAL
] - The value specified by attr is invalid.
- [
ENOMEM
] - The process cannot allocate enough memory to create another condition variable.
- [
EAGAIN
] - The system temporarily lacks the resources to create another condition variable.
The other functions fail if:
- [
EINVAL
] - The value specified by cond, mutex, or abstime is invalid.
pthread_cond_destroy
() additionally fails
if:
- [
EBUSY
] - The variable cond is locked by another thread.
pthread_cond_timedwait
() additionally
fails if:
- [
ETIMEDOUT
] - The system time has reached or exceeded the time specified in abstime.
SEE ALSO
STANDARDS
These functions conform to ISO/IEC 9945-1:1996 (“POSIX.1”).