Por último estarían los mecanismos que permiten controlar la variable
de condición. El primero de ellos es el mecanismo llamado mediante pthread_cond_wait
.
De esta manera, el hilo que lo invoca se queda bloqueado y libera un cerrojo que es pasado
como segundo parámetro de la función. Típicamente, un hilo saldrá del bloqueo cuando otro
ejecute la siguiente función de notificación: pthread_cond_signal
.
int pthread_cond_wait(pthread_cond_t *restrict cond,
pthread_mutex_t *restrict mutex);
Existe también una versión no bloqueante de lo anterior: pthread_cond_timedwait
que permite además fijar un tiempo máximo para la espera:
int pthread_cond_timedwait(pthread_cond_t *restrict cond,
pthread_mutex_t *restrict mutex,
const struct timespec *restrict abstime);