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