Junior — Middle
Como sincronizar o acesso a um recurso comum usando uma estrutura Map e um mecanismo Mutex?
sobes.tech IA
Resposta da IA
Em Go, para sincronizar o acesso a uma estrutura partilhada Map, geralmente usa-se um mutex (sync.Mutex), pois o map não é seguro para concorrência.
Exemplo:
import (
"sync"
)
var (
mu sync.Mutex
sharedMap = make(map[string]int)
)
func writeToMap(key string, value int) {
mu.Lock() // bloqueia o acesso
sharedMap[key] = value
mu.Unlock() // desbloqueia
}
func readFromMap(key string) (int, bool) {
mu.Lock()
val, ok := sharedMap[key]
mu.Unlock()
return val, ok
}
Desta forma, antes de ler ou escrever na map, bloqueamos o mutex para evitar condições de corrida e garantir o funcionamento correto em ambientes concorrentes.