int pthread_cond_timedwait(pthread_cond_t *restrict cv, pthread_mutex_t *restrict mp, const struct timespec *restrict abstime);
#include <pthread.h> #include <time.h> pthread_cond_t cv; pthread_mutex_t mp; timestruct_t abstime; int ret; /* wait on condition variable */ ret = pthread_cond_timedwait(&cv, & mp, &abstime);
pthread_cond_timedwait() always returns with the mutex locked and owned by the calling thread, even when pthread_cond_timedwait() is returning an error.
The pthread_cond_timedwait() function blocks until the condition is signaled or until the time of day specified by the last argument has passed.
pthread_cond_timedwait() is also a cancellation point.
pthread_timestruc_t to; pthread_mutex_t m; pthread_cond_t c; ... pthread_mutex_lock(&m); clock_gettime(CLOCK_REALTIME, &to); to.tv_sec += TIMEOUT; while (cond == FALSE) { err = pthread_cond_timedwait(&c, &m, &to); if (err == ETIMEDOUT) { /* timeout, do something */ break; } } pthread_mutex_unlock(&m);