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