Коротко:
sync/atomic действительно быстрее. В простом кейсе с одним общим счётчиком атомики дают ~3× выигрыш по времени операции по сравнению с sync.RWMutex. Это ожидаемо: одна инструкция CPU против захвата блокировки, пусть даже с быстрым путём в рантайме Go.Проблемы начинаются, как только логика перестаёт быть «одна операция — одно поле». Атомарные операции защищают ровно одну инструкцию. Последовательность
прочитать → проверить → записать уже не атомарна. Для корректности приходится переходить к CAS-циклам, ретраям, лимитам попыток. Код быстро обрастает условиями, и цена ошибки становится выше, чем выигрыш в наносекундах.Из статьи я бы вынес одно практическое правило. Начинать стоит с мьютекса.
Атомарные операции — это инструмент точечной оптимизации, когда:
* объект — одно значение или независимые счётчики,
* нет сложных инвариантов,
* выигрыш подтверждён измерениями, а не ощущениями.
Во всех остальных случаях простота и локальная очевидность кода обычно оказываются важнее разницы между 30 и 100 наносекундами.
📚 Читать на Хабр: https://habr.com/ru/articles/986732/