LearnViz CompSci
Home / Learn / Operating Systems / Monitors

Intermediate Topic 22 of 51 Operating Systems

Monitors

Language-level constructs bundling data, locks and conditions.

How it works

A monitor is a high-level synchronization construct that bundles shared data with the procedures that operate on it and guarantees that only one thread executes inside the monitor at a time. Condition variables inside a monitor let threads wait for a condition with wait and be woken with signal or notify, releasing the monitor lock while waiting. Languages such as Java provide them through synchronized methods and wait and notify.

Step-by-step walkthrough

  1. Threads enter the monitor one at a time.
  2. The holder runs procedures that use the shared data.
  3. If a condition is not met it calls wait and joins a condition queue.
  4. Another thread changes the state and calls signal.
  5. The waiting thread resumes when the monitor is free.

Where it is used

Bounded buffers, thread-safe queues, resource managers, readers-writers solutions and state-dependent coordination between threads use monitors.

Common pitfall

Always check conditions in a while loop, not an if, because of spurious wakeups and changes by other threads. Lost notifications occur if signaling happens before waiting without a state check. Calling wait without holding the lock is an error. Nested monitor calls can cause deadlock. Keep the invariant clear and use notifyAll when unsure.

Where it fits in the course

Monitors is topic 22 of 51 in Operating Systems, rated Intermediate. It follows Semaphores. The next topic is Deadlock.

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 Operating Systems quiz, and revisit the topic if you miss a question.

Frequently asked questions

What is Monitors?
Language-level constructs bundling data, locks and conditions. It belongs to Operating Systems and is an intermediate-level topic.
Where do people use Monitors?
Bounded buffers, thread-safe queues, resource managers, readers-writers solutions and state-dependent coordination between threads use monitors.
What is the most common mistake with Monitors?
Always check conditions in a while loop, not an if, because of spurious wakeups and changes by other threads.
What should I learn before this topic?
Start with Semaphores, the topic just before it in Operating Systems.
How can I practice it?
Answer the mini quiz in the interactive lesson, then take the Operating Systems quiz.
Is Monitors hard to learn?
It is an Intermediate topic. Be comfortable with the Beginner topics in this area first, then read the common pitfall carefully, since it is where most mistakes happen.
How long does it take to learn Monitors?
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 Monitors?
Semaphores, Deadlock, Mutex are closely connected. The full list is in the related topics section of this page.
What should I study after Monitors?
Continue with Deadlock, the next topic in Operating Systems.

Related topics