Go ofrece dos enfoques para la seguridad de la concurrencia: channels ("comparte memoria mediante comunicación") y el paquete sync (mutexes/bloqueos para proteger la memoria compartida directamente). A pesar de la filosofía de Go centrada en channels, las primitivas sync suelen ser la opción más simple y eficiente para proteger el estado compartido.
sync.Mutex — protege el estado compartido con un bloqueo
Counter {
mu sync.Mutex
count
}
Increment() {
c.mu.Lock()
c.mu.Unlock()
c.count++
}
