Junior — Middle
Quais as consequências de escrever simultaneamente num Map a partir de diferentes goroutines concorrentes?
sobes.tech IA
Resposta da IA
No Go, o mapa padrão (map) não é seguro para acesso concorrente para leitura e escrita de várias goroutines. Se várias goroutines tentarem escrever ao mesmo tempo no mesmo mapa sem sincronização, isso levará a condições de corrida, pânico em tempo de execução (erro fatal: escritas concorrentes no mapa) e comportamento imprevisível do programa.
Para evitar problemas, deve-se usar:
- Mutexes (sync.Mutex) para proteger o acesso ao mapa.
- Estruturas de dados seguras para concorrência, como sync.Map.
Exemplo com mutex:
var mu sync.Mutex
var m = make(map[string]int)
func write(key string, value int) {
mu.Lock()
m[key] = value
mu.Unlock()
}
Sem essa proteção, o programa pode terminar abruptamente.