Middle — Middle+
É seguro realizar uma escrita em um contêiner map em um ambiente multithread sem sincronização adicional?
sobes.tech IA
Resposta da IA
No Go, o mapa padrão (map) não é seguro para escrita em ambientes concorrentes. Se várias goroutines escreverem simultaneamente em um map sem sincronização, isso levará a condições de corrida e pânicos em tempo de execução.
Para escrever com segurança em um map em um ambiente multithread, deve-se usar:
- sync.Mutex ou sync.RWMutex para bloquear o acesso;
- sync.Map, uma implementação de mapa segura para concorrência da biblioteca padrão.
Exemplo com sync.Mutex:
var mu sync.Mutex
var m = make(map[string]int)
func safeWrite(key string, value int) {
mu.Lock()
m[key] = value
mu.Unlock()
}
Sem essa sincronização, a escrita em um map não é segura.