Go tarjoaa kaksi lähestymistapaa samanaikaisen suorituksen turvallisuuteen: channels ("jaa muistia viestinnällä") ja sync-paketti (mutexes/lukot suoraan jaetun muistin suojelemiseksi). Huolimatta Gon channels-ensimmäisen filosofian, sync-primitiivit ovat usein yksinkertaisempi ja tehokkaampi valinta jaetun tilan suojelemiseksi.
sync.Mutex — suojaa jaettu tila lukolla
Counter {
mu sync.Mutex
count
}
Increment() {
c.mu.Lock()
c.mu.Unlock()
c.count++
}
