• ↑↓ to navigate
  • ↵ to open
  • ⟶ to select
  • ⌘ ⌥ ↵ to open in a panel
  • ←→ to navigate
  • esc to dismiss
⌘ '
keyboard shortcuts

The Problem

Multiple processes want to read or write a shared resource. Readers can access concurrently, but writers need exclusive access. We need to coordinate them.

Core Idea

A synchronization problem where multiple readers can read simultaneously, but a writer requires exclusive access (no readers or other writers).

How It Works

  1. Readers: increment readCount (atomically), if first reader, wait on writeLock
  2. Readers: read data, decrement readCount, if last reader, signal writeLock
  3. Writers: wait on writeLock (exclusive access), write, signal writeLock
  4. Mutex: protects readCount variable
rw Readers Readers readCount++ if first: wait(writeLock) Resource Shared Resource (data) Readers->Resource concurrent read Writers Writers wait(writeLock) write signal(writeLock) Writers->Resource exclusive write

Key Properties

  • Readers can proceed concurrently
  • Writers need exclusive access
  • Starvation possible: writers may starve if readers keep coming
  • Uses readCount, mutex, writeLock semaphores

Semantic Network

semantic_Reader_Writer_Problem THIS Reader Writer Proble REL1 Related Concept THIS--REL1 related REL2 Builds Into THIS--REL2 builds into

Connections

Edge Cases & Gotchas

  • Writer starvation: readers keep arriving, writer never gets access
  • Reader starvation: writer locks resource, new readers blocked
  • readCount must be protected by mutex (it’s a shared variable)