Una condition variable C:
waitC(cond)
waitC(cond)
cond.append(p) // proceso espera la condición
p.state := blocked // no usa cpu, se bloquea
monitor.releaseLock() // libera el lock de la cond variable
signalC(cond)
signalC(cond)
if (cond <> empty) // verifica si la condición está vacía
begin
q := cond.remove() // quita la condición
q.state := ready // se pone libre
end
empty(cond)
empty(cond)
return cond = empty // retorna si la condición está vacía
Herramientas de sincronización que permite a los hilos tener exclusión mutua y la posibilidad de esperar (block) porque una condición se vuelva falsa.
Tienen un mecanismo para señalizar otros hilos cuando su condición se cumple.