Go は並行安全性に対して 2 つのアプローチを提供しています: channel ("メモリを共有して通信する") と sync パッケージ (共有メモリを直接保護するための mutex/ロック)。Go の channel-first 哲学にもかかわらず、sync プリミティブは多くの場合、共有状態を保護するためのより単純で効率的な選択肢です。
sync.Mutex — ロックで共有状態を保護する
Counter {
mu sync.Mutex
count
}
Increment() {
c.mu.Lock()
c.mu.Unlock()
c.count++
}
