Go nabízí dva přístupy k bezpečnosti konkurence: channels ("sdílejte paměť komunikací") a balíček sync (mutexes/zámky pro přímou ochranu sdílené paměti). Navzdory filosofii Go zaměřené na channels jsou sync primitiva často jednoduší a efektivnější volbou pro ochranu sdíleného stavu.
sync.Mutex — ochrana sdíleného stavu zámkem
Counter {
mu sync.Mutex
count
}
Increment() {
c.mu.Lock()
c.mu.Unlock()
c.count++
}
