A condition variable is a way for multiple [threads] to cooperate efficiently as to who is holding a [mutex]. In particular, CVs allow a group of threads to go to sleep waiting for the mutex to be held ''and'' some other condition to be true (e.g., if it is on a shared queue, the condition might be that there is something in the queue) and to be efficiently woken up when the condition ''might'' be true. <>Concurrency | Concept