Go Internals: sync.Mutex и sync/atomic — от data race до starvation mode

Mutex и atomic — это не два независимых инструмента, а один стек абстракций. Я разбираю этот стек снизу вверх и обратно: почему counter++ — это три инструкции ARM64, как CAS стал универсальным примитивом (Herlihy, 1991), почему Mutex построен поверх atomic CAS, и как дискуссия Рассела Кокса о barging vs handoff (issue #13086) дала Go порог голодания в 1 миллисекунду. С публичными бенчмарками, битовой раскладкой состояния Mutex и шпаргалкой, что когда использовать.

июня 18, 2026 · 54 минуты · 11310 слов · Sebastian PE