Что такое атомарные операции?

Middle+
811 просмотров
AFK Offer AI

Атомарные операции выполняются целиком, без возможности прерывания другим потоком. В Go это пакет sync/atomic — операции с числами и указателями на уровне CPU-инструкций.

var counter int64

// горутинобезопасно без мьютекса atomic.AddInt64(&counter, 1) val := atomic.LoadInt64(&counter) atomic.StoreInt64(&counter, 0) atomic.CompareAndSwapInt64(&counter, old, new)

Атомарные операции быстрее мьютексов (наносекунды vs микросекунды), но подходят только для простых операций — один счётчик, один флаг. Для сложных invariants (несколько связанных переменных) нужен мьютекс.

Следующий вопрос

Что такое pub/sub?