Beginner Topic 10 of 51 Concurrency & Parallelism
Condition Variables
Waiting threads signaled when state changes.
How it works
A condition variable lets threads wait until some condition on shared state becomes true, and lets other threads signal when it changes. A waiting thread holds a mutex, checks the condition, and calls wait, which atomically releases the mutex and sleeps; when notified, it reacquires the mutex and rechecks. Signal wakes one waiter and broadcast wakes all. Condition variables are used with a predicate protected by the associated mutex, as in monitors.
Where it is used
Producer-consumer queues, thread pools waiting for tasks, barriers and any state-dependent coordination between threads use condition variables.
Common pitfall
Always check the condition in a while loop, because of spurious wakeups and conditions changing before the waiter runs. Lost wakeups occur if the signal happens before the wait without state to record it, so update the state under the lock. Signaling without holding the lock is allowed but easy to get wrong. Using the wrong mutex or forgetting to notify causes hangs. Prefer higher-level queues and latches.
Where it fits in the course
Condition Variables is topic 10 of 51 in Concurrency & Parallelism, rated Beginner. It follows Read-Write Locks. The next topic is Producer-Consumer Pattern.
Practice and explore
- Open the interactive lesson, with a mini quiz.
- Take the Concurrency & Parallelism quiz.
How to study this topic
- Read the explanation above and restate the definition in your own words.
- Open the interactive lesson and answer its mini quiz.
- Read the common pitfall, then write a short example that avoids it.
- Check your understanding in the Concurrency & Parallelism quiz, and revisit the topic if you miss a question.
Frequently asked questions
What is Condition Variables?
Where do people use Condition Variables?
What is the most common mistake with Condition Variables?
What should I learn before this topic?
How can I practice it?
Is Condition Variables hard to learn?
How long does it take to learn Condition Variables?
Which topics are related to Condition Variables?
What should I study after Condition Variables?
Related topics
- Read-Write Locks (Concurrency & Parallelism)
- Producer-Consumer Pattern (Concurrency & Parallelism)
- Locks in Practice (Concurrency & Parallelism)
- Atomic Operations (Concurrency & Parallelism)
- Variables (Programming Fundamentals)
- Environment Variables (DevOps & Tooling)
- Random Variables (Math for Computing)