The Beginning: Mutual Exclusion
The Problem. While concurrent program
execution had been considered
for years, the computer science of concurrency
began with Edsger Dijkstra’s
seminal 1965 paper that introduced the
mutual exclusion problem.5 He posed
the problem of synchronizing N processes,
each with a section of code
called its critical section, so that the following
properties are satisfied:
Mutual Exclusion. No two critical sections
are executed concurrently.
(Like many problems in concurrency,
the goal of mutual exclusion
is to eliminate concurrency, allowing
us to at least pretend that
everything happens sequentially.)
Livelock Freedom. If some process is
waiting to execute its critical section,
then some process will eventually
execute its critical section.