Junior — Middle
O que acontece se várias goroutines tentarem aceder simultaneamente a uma mesma chave num mapa?
sobes.tech IA
Resposta da IA
Em Go, um mapa (map) não é uma estrutura de dados segura para acesso concorrente. Se várias goroutines tentarem ler e/ou escrever no mesmo mapa sem sincronização, isso levará a condições de corrida e, provavelmente, a um pânico em tempo de execução.
Para evitar isso, é necessário usar mecanismos de sincronização, por exemplo:
sync.Mutexpara bloquear o acesso ao mapa.sync.RWMutexpara separar bloqueios de leitura e escrita.- Estruturas especializadas, como
sync.Map, que são seguras para acesso concorrente.
Exemplo de uso de sync.Mutex para proteger um 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]
}