Ответ
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-переменных.