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