Un variable de condición es un mecanismo de sincronización que no guarda ningún valor, sino que tiene asociado una cola.
Una variable de condición C consta de tres operaciones atómicas:
- La operación de
waitC(C)siempre bloquea el proceso hasta que sea desbloqueado consignalC(C). El proceso es agregado a una cola. - La operación
signalC(C)desbloquea el último proceso de la cola. Si está vacía, no tiene ningún efecto. - La operación
empty(C)nos permite verificar si cola de procesos está vacía.
Las variables de condición suelen ser utilizadas junto a los Monitores.
Es recomendable verificar el estado de la condición luego de ser despertado, ya que a veces el sistema operativo realiza un spurious wakeup. Esto quiere decir que a veces el sistema operativo despierta a nuestro hilo esperando en la variable de condición sin ser señalizado.