Junior — Middle
A classe Map garante segurança ao ser usada em um ambiente multithread?
sobes.tech IA
Resposta da IA
No Go, o tipo padrão Map não é seguro para uso em ambientes multithread sem sincronização adicional. Se várias goroutines lerem e escreverem no Map ao mesmo tempo sem proteção, isso pode levar a condições de corrida e pânicos.
Para garantir a segurança no acesso concorrente, pode-se usar:
- Mutexes (sync.Mutex ou sync.RWMutex) para bloquear o acesso ao Map.
- Estruturas especializadas, como sync.Map, que são projetadas considerando o acesso concorrente.
Exemplo de uso do sync.Map:
var m sync.Map
m.Store("key", "value")
value, ok := m.Load("key")
if ok {
fmt.Println(value)
}
Assim, o Map clássico não garante segurança em multithreading, mas há ferramentas para trabalhar com coleções associativas de forma segura.