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.