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