Basic Ideas
the monitor is controlled by a lock; only 1 process can enter the monitor at a time; others are queued
condition variables provide a way to wait; when a process blocks on a condition variable, it givesup the lock.
a process signals when a resource or condition has become available; this causes a waiting process to resume immediately. The lock is automatically passed to the waiter; the original process blocks.