Senior
¿Se puede escribir en un mismo mapa desde diferentes goroutines al mismo tiempo? ¿Qué sucederá?
sobes.tech AI
Respuesta de la IA
En Go, no se puede escribir de manera segura en un mismo mapa desde diferentes goroutines sin sincronización adicional. El mapa estándar no es seguro para concurrencia, y las operaciones de escritura simultáneas pueden provocar un pánico (runtime panic) o corrupción de datos.
Para usar un mapa de manera segura en un entorno concurrente, se puede:
- Usar sync.Mutex o sync.RWMutex para proteger el acceso al mapa.
- Usar sync.Map, una estructura de datos especializada y segura para mapas.
Ejemplo con mutex:
var (
m = make(map[string]int)
mu sync.Mutex
)
func write(key string, value int) {
mu.Lock()
m[key] = value
mu.Unlock()
}
Sin esta protección, el programa puede terminar de manera inesperada.