Post Thumbnail

Автор рассказывает про атомарные операции в Go как более производительная альтернатива мьютексам для lock-free программирования.

В статье объясняется аппаратная основа атомарных операций - инструкции CPU уровня LOCK XADD. Автор показывает как работать с типизированным API, появившемся в Go 1.19, те самые atomic.Int64, atomic.Pointer[T] и тд, и предупреждает о ловушке atomic.Value, который фиксирует тип при первом сохранении.

На практических примерах показаны CAS-циклы для рейт лимитинга и атомарная замена конфигурации на лету без блокировок.

В целом, мьютексы стоит использовать при работе с несколькими взаимозависимыми переменными, а атомарные операции - для изолированных значений

Похожее

Post Thumbnail

JIT для go

В статье про JIT-компилятор для Go версии 1.17+, форк проекта nelhage/gojit. ...

Post Thumbnail

PGKeeper

PGKeeper - это сервис на Go, который команда Figma разработала для замены устаре...

Post Thumbnail

CPU нагрузка

В статье рассматриваются проблемы оптимизации кода на Go, который нагружает CPU...