Sobes.tech
Senior

É possível escrever numa mesma map a partir de diferentes goroutines ao mesmo tempo? O que acontecerá?

sobes.tech IA

Resposta da IA

Em Go, não é seguro escrever num mesmo mapa a partir de diferentes goroutines sem sincronização adicional. O mapa padrão não é seguro para concorrência, e operações de escrita simultâneas podem levar a um pânico (runtime panic) ou corrupção de dados.

Para usar o mapa de forma segura em um ambiente concorrente, pode-se:

  • Usar sync.Mutex ou sync.RWMutex para proteger o acesso ao mapa.
  • Usar sync.Map, uma estrutura de dados especializada e segura para mapas.

Exemplo com mutex:

var (
    m = make(map[string]int)
    mu sync.Mutex
)

func write(key string, value int) {
    mu.Lock()
    m[key] = value
    mu.Unlock()
}

Sem essa proteção, o programa pode terminar de forma inesperada.