• ↑↓ pour naviguer
  • pour ouvrir
  • pour sélectionner
  • ⌘ ⌥ ↵ pour ouvrir dans un panneau
  • ←→ pour naviguer
  • esc pour rejeter
⌘ '
raccourcis clavier

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

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)