Middle — Middle+
Como é que o trabalho assíncrono da estrutura de dados Map é realizado?
sobes.tech IA
Resposta da IA
No Go, a estrutura de dados padrão map não é segura para acesso simultâneo de várias goroutines. Trabalhar de forma assíncrona (concorrente) com map requer sincronização adicional.
Para trabalhar com segurança com map em um ambiente concorrente, geralmente usam-se:
- Mutexes (
sync.Mutexousync.RWMutex) — envolvem operações de leitura e escrita em bloqueios para evitar condições de corrida. - Pacote
sync.Map— uma implementação especializada e segura para concorrência de mapas, otimizada para casos com muitas goroutines e poucas alterações.
Exemplo com sync.Map:
var m sync.Map
// Escrita
m.Store("key", "value")
// Leitura
if val, ok := m.Load("key"); ok {
fmt.Println(val)
}
// Remoção
m.Delete("key")
Dessa forma, o trabalho assíncrono com map em Go é alcançado seja por sincronização explícita ou pelo uso de estruturas seguras para concorrência da biblioteca padrão.