mutex lock = INIT(); P: loop C: loop v = produce() LOCK(lock) LOCK(lock) C2 C1 UNLOCK(lock) UNLOCK(lock) consume(v)