Go предлагает два подхода к безопасности параллелизма: channels («делиться памятью путём общения») и пакет sync (мьютексы/блокировки для прямой защиты общей памяти). Несмотря на философию Go, ориентированную на channels, примитивы sync часто являются более простым и эффективным выбором для защиты общего состояния.
sync.Mutex — защита общего состояния с помощью блокировки
Counter {
mu sync.Mutex
count
}
Increment() {
c.mu.Lock()
c.mu.Unlock()
c.count++
}
