UC3M

Grado en Ing. Telemática/Sist. Audiovisuales/Sist. de Comunicaciones

Arquitectura de Sistemas

Septiembre 2015 - Enero 2016

11.4.5. Espera

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);