LearnViz CompSci
Home / Learn / Concurrency & Parallelism / Condition Variables

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

How to study this topic

  1. Read the explanation above and restate the definition in your own words.
  2. Open the interactive lesson and answer its mini quiz.
  3. Read the common pitfall, then write a short example that avoids it.
  4. Check your understanding in the Concurrency & Parallelism quiz, and revisit the topic if you miss a question.

Frequently asked questions

What is Condition Variables?
Waiting threads signaled when state changes. It belongs to Concurrency & Parallelism and is a beginner-level topic.
Where do people use Condition Variables?
Producer-consumer queues, thread pools waiting for tasks, barriers and any state-dependent coordination between threads use condition variables.
What is the most common mistake with Condition Variables?
Always check the condition in a while loop, because of spurious wakeups and conditions changing before the waiter runs.
What should I learn before this topic?
Start with Read-Write Locks, the topic just before it in Concurrency & Parallelism.
How can I practice it?
Answer the mini quiz in the interactive lesson, then take the Concurrency & Parallelism quiz.
Is Condition Variables hard to learn?
It is a Beginner topic, so it works as an entry point. If the terms are new, read the explanation twice and try the visualizer before the quiz.
How long does it take to learn Condition Variables?
Most learners can read the explanation and finish the interactive lesson in under an hour. Fluency comes from applying the idea, so plan a few short practice sessions with the quiz.
Which topics are related to Condition Variables?
Read-Write Locks, Producer-Consumer Pattern, Locks in Practice are closely connected. The full list is in the related topics section of this page.
What should I study after Condition Variables?
Continue with Producer-Consumer Pattern, the next topic in Concurrency & Parallelism.

Related topics