Concurrency
What goes wrong when threads share memory: the explosion of interleavings, the races they hide, and the locks, condition variables, and invariants that hold a shared state together.
Explainers
- Threads, Locks & the Anatomy of a Race — Share memory between two threads and the number of ways their steps can interleave explodes — most correct, a few catastrophic. Walk the canonical lost update, scrub an adversarial schedule op by op, then hold the invariant with a mutex, condition variables done right, and a deadlock you can watch form.