Junior — Middle
¿Qué consecuencias ocurren al escribir simultáneamente en un Map desde diferentes goroutines en competencia?
sobes.tech AI
Respuesta de la IA
En Go, el mapa estándar (map) no es seguro para el acceso concurrente para lectura y escritura desde múltiples goroutines. Si varias goroutines intentan escribir en el mismo mapa sin sincronización, esto provocará condiciones de carrera, un pánico en tiempo de ejecución (error fatal: escrituras concurrentes en el mapa) y un comportamiento impredecible del programa.
Para evitar problemas, se debe usar:
- Mutexes (sync.Mutex) para proteger el acceso al mapa.
- Estructuras de datos seguras para concurrencia especializadas, como sync.Map.
Ejemplo con mutex:
var mu sync.Mutex
var m = make(map[string]int)
func write(key string, value int) {
mu.Lock()
m[key] = value
mu.Unlock()
}
Sin esta protección, el programa puede terminar abruptamente.