Go oferuje dwa podejścia do bezpieczeństwa współbieżności: channels ("dzielenie pamięci poprzez komunikację") i pakiet sync (muteksy/locki do bezpośredniego ochrony współdzielonej pamięci). Pomimo "channel-first" filozofii Go'a, prymitywy sync są często prostszym i bardziej wydajnym wyborem do ochrony współdzielonego stanu.
sync.Mutex — ochrona współdzielonego stanu za pomocą locka
Counter {
mu sync.Mutex
count
}
Increment() {
c.mu.Lock()
c.mu.Unlock()
c.count++
}
