Что такое Atomic

«Что такое Atomic» — вопрос из категории Golang, который задают на 29% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Atomic операции в Go — это операции, которые выполняются за один шаг без возможности прерывания. Они гарантируют потокобезопасность без использования мьютексов, работая на уровне процессорных инструкций.

Пакет sync/atomic предоставляет низкоуровневые atomic-примитивы для работы с числами и указателями. Пример:

var counter int32

func increment() {
    atomic.AddInt32(&counter, 1)
}

func get() int32 {
    return atomic.LoadInt32(&counter)
}

Ключевые особенности:

  • Работает только с конкретными типами (int32, int64, uint32 и т.д.)
  • Быстрее мьютексов для простых операций
  • Не подходит для сложных структур данных
  • Обеспечивает видимость изменений между горутинами

Используется для счетчиков, флагов и других простых shared-переменных.