Sobes.tech
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.