Lección 11: variables de condición — coordinación entre hilos
Un mutex evita las race conditions, pero no permite que un hilo espere hasta que se cumpla una condición. Las variables de condición (condition variables) permiten que un hilo duerma de forma eficiente hasta que otro hilo señale que algo cambió.
Una variable de condición es como una campanita de tienda: esperas junto a la puerta y cuando alguien pone un artículo en el estante, suena la campana — entonces entras.
- variable de condición
- Un primitivo de sincronización que le permite a un hilo esperar de forma atómica una condición mientras libera el mutex, y despertar cuando otro hilo lo señala.
- productor-consumidor
- Un patrón de programación en el que un hilo (productor) genera datos y los coloca en un buffer, y otro hilo (consumidor) los toma y los procesa.
- despertar espurio (spurious wakeup)
- Una situación en la que pthread_cond_wait retorna aunque ningún hilo haya llamado a signal. Requiere revisar el predicado dentro de un bucle.
- broadcast
- pthread_cond_broadcast despierta a todos los hilos que esperan en una variable de condición, a diferencia de signal, que despierta solo a uno.
- predicado
- La condición que se verifica antes y después de pthread_cond_wait para protegerse de despertares espurios y problemas de TOCTOU.