Junior — Middle
¿Se puede garantizar la seguridad al escribir en un Map desde múltiples hilos simultáneamente?
sobes.tech AI
Respuesta de la IA
En Go, el mapa estándar (map) no es seguro para la concurrencia en escrituras simultáneas desde varias goroutines. Si varias goroutines escriben en un map sin sincronización, esto provocará un pánico.
Para garantizar la seguridad en escrituras concurrentes, se puede:
- Usar un mutex (sync.Mutex o sync.RWMutex) para proteger el acceso al map.
- Usar estructuras de datos seguras para la concurrencia, como sync.Map, que está diseñada para acceso concurrente.
Ejemplo con mutex:
var mu sync.Mutex
var m = make(map[string]int)
func safeWrite(key string, value int) {
mu.Lock()
defer mu.Unlock()
m[key] = value
}
O usar sync.Map:
var m sync.Map
func safeWrite(key string, value int) {
m.Store(key, value)
}
Por lo tanto, para seguridad en escrituras concurrentes, se debe usar sincronización.