Junior — Middle
¿Qué sucede si varias goroutines intentan acceder simultáneamente a la misma clave en un mapa?
sobes.tech AI
Respuesta de la IA
En Go, un mapa (map) no es una estructura de datos segura para el acceso concurrente. Si varias goroutines intentan leer y/o escribir en el mismo mapa sin sincronización, esto provocará condiciones de carrera y, probablemente, un pánico en tiempo de ejecución.
Para evitar esto, es necesario usar mecanismos de sincronización, por ejemplo:
sync.Mutexpara bloquear el acceso al mapa.sync.RWMutexpara separar los bloqueos de lectura y escritura.- Estructuras especializadas, como
sync.Map, que son seguras para acceso concurrente.
Ejemplo de uso de sync.Mutex para proteger un mapa:
var mu sync.Mutex
var m = make(map[string]int)
func write(key string, value int) {
mu.Lock()
defer mu.Unlock()
m[key] = value
}
func read(key string) int {
mu.Lock()
defer mu.Unlock()
return m[key]
}