Semaphores Semaphores are a standard mutual exclusion primitive Semaphores can sleep Can't be used in atomic context Optimized for the non-contention case Relatively fair Waiting threads are queued Reader/writer variant exists