A condition variable interface for multi-thread synchronization. Condition variables enable threads to suspend execution and yield the processors until some predicate on some shared data is satisfied.