pthread_cond_wait(3thr)pthread_cond_wait(3thr)Namepthread_cond_wait - Causes a thread to wait for a condition variable to
be signaled or broadcast.
Syntax
#include <pthread.h>
int pthread_cond_wait (cond, mutex)
pthread_cond_t *cond;
pthread_mutex_t *mutex;
Arguments
cond Condition variable waited on.
mutex Mutex associated with the condition variable specified in cond.
Description
This routine causes a thread to wait for a condition variable to be
signaled or broadcast. Each condition corresponds to one or more Bool‐
ean relations (predicates) based on shared data. The calling thread
waits for the data to reach a particular state (for the predicate to
become true).
Call this routine after you have locked the mutex specified in mutex.
The results of this routine are unpredictable if this routine is called
without first locking the mutex.
This routine atomically releases the mutex and causes the calling
thread to wait on the condition. If the wait is satisfied as a result
of some thread calling pthread_cond_signal or pthread_cond_broadcast,
the mutex is reacquired and the routine returns.
A thread that changes the state of storage protected by the mutex in
such a way that a predicate associated with a condition variable might
now be true must call either pthread_cond_signal or pthread_cond_broad‐
cast for that condition variable. If neither call is made, any thread
waiting on the condition variable continues to wait.
This routine might (with low probability) return when the condition
variable has not been signaled or broadcast. When a spurious wakeup
occurs, the mutex is reacquired before the routine returns. (To handle
this type of situation, enclose this routine in a loop that checks the
predicate.)
Return Values
If an error condition occurs, this routine returns -1 and errno is set
to the corresponding error value. Possible return values are as fol‐
lows.
Return Error Description
0 Successful comple‐
tion.
-1 [EINVAL] The value specified
by cond or mutex is
invalid.
Different mutexes
are supplied for
concurrent
pthread_cond_wait
or
pthread_cond_timed‐
wait operations.
-1 [EDEADLK] A deadlock condi‐
tion is detected.
pthread_cond_wait(3thr)