Sobes.tech
Junior — Middle

Que situações podem ocorrer ao gravar simultaneamente em um armazenamento do tipo mapa?

sobes.tech IA

Resposta da IA

Em Go, o mapa padrão (map) não é seguro para acesso concorrente ao ler e escrever simultaneamente de várias goroutines. Se várias goroutines escreverem dados no map ao mesmo tempo sem sincronização, isso pode levar a um pânico em tempo de execução com a mensagem "concurrent map writes" ou a um comportamento imprevisível do programa.

Para evitar esses problemas, deve-se usar mecanismos de sincronização, como mutex (sync.Mutex) ou estruturas especializadas, como sync.Map, que são seguras para acesso concorrente.

Exemplo com mutex:

var mu sync.Mutex
var m = make(map[string]int)

func writeToMap(key string, value int) {
    mu.Lock()
    defer mu.Unlock()
    m[key] = value
}

Sem essa proteção, a escrita simultânea pode corromper os dados ou causar a terminação inesperada do programa.