What are the differences between a monitor and a semaphore?
1. A signal on an empty condition variable has no effect.
V increments a semaphore on which no thread is blocked.
2. A wait on a condition variable always blocks the thread until a subsequent signal.
P decrements a semaphore whose value is positive without blocking.