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