Critical Section
A region of code that accesses shared state whose invariant could be violated by concurrent execution and therefore requires controlled synchronization.
The purpose of a critical section is not merely to allow one thread at a time; it protects a shared invariant from unsafe interleavings. If the protected region is too broad, lock contention and tail latency increase. If it is too narrow, logically coupled changes can escape into separate synchronization windows.
A mutex or synchronized block can protect the region, while a lock-free algorithm may preserve the same invariant through atomic primitives and retry loops. "No lock" therefore does not imply that no critical shared state exists.
Related: Race Condition, Mutex, Compare-and-Swap, Lock-Free, The Real Cost of Lock-Free Queues.