Shared Mutable State as Root Hazard¶
All concurrency hazards (races, deadlocks, visibility issues) stem from shared mutable state. Remove sharing or mutation, and concurrency becomes trivial. This is the "iron triangle" of concurrency: pick any two of concurrent access, mutation, and sharing - but not all three safely.
Tension Addressed¶
Safety vs. Liveness, Isolation vs. Performance
Recognizable As¶
Architectural decisions to use immutable data, single-threaded ownership, message passing, or explicit synchronization. If you see a lock, there's shared mutable state; if you see immutable objects passed between threads, the hazard has been designed away.
Canonical Sources¶
Goetz, "Java Concurrency in Practice" (2006); Clojure's "Values and Change" philosophy
Transfers To¶
Functional programming (immutability), database isolation levels, distributed consensus (replicated state)