Go biedt twee benaderingen voor concurrency-veiligheid: channels ("share memory by communicating") en het sync package (mutexes/locks voor het rechtstreeks beschermen van gedeeld geheugen). Ondanks Go's channel-first filosofie zijn sync primitives vaak de eenvoudigere, efficiëntere keuze voor het beschermen van gedeelde toestand.
sync.Mutex — bescherm gedeelde toestand met een slot
Counter {
mu sync.Mutex
count
}
Increment() {
c.mu.Lock()
c.mu.Unlock()
c.count++
}
