🟡 Средний · 2 очк. Разное / продвинутое
Какой пакет для атомарных операций?
A sync/mutex
B sync/atomic
C atomic
D runtime/atomic
Объяснение вопроса

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

Основные функции

var n int64
atomic.AddInt64(&n, 1)
atomic.LoadInt64(&n)
atomic.StoreInt64(&n, 100)
ok := atomic.CompareAndSwapInt64(&n, 100, 101)

Есть варианты для int32, uint64, указателей atomic.Pointer[T] (Go 1.19+) и др.

Когда использовать

Простой счётчик или флаг, к которому обращаются много горутин: атомики быстрее мьютекса и не блокируют. Для сложной логики (несколько связанных полей) нужен мьютекс.

  • Атомарность на уровне процессорных инструкций
  • Нет блокировок, подходит для lock-free структур
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.