Junior — Middle
Cum se sincronizează accesul la o resursă comună folosind o structură Map și un mecanism Mutex?
sobes.tech AI
Răspuns de la AI
În Go, pentru a sincroniza accesul la o structură comună Map, se folosește de obicei un mutex (sync.Mutex), deoarece map nu este sigur pentru utilizare concurentă.
Exemplu:
import (
"sync"
)
var (
mu sync.Mutex
sharedMap = make(map[string]int)
)
func writeToMap(key string, value int) {
mu.Lock() // blocăm accesul
sharedMap[key] = value
mu.Unlock() // deblocăm
}
func readFromMap(key string) (int, bool) {
mu.Lock()
val, ok := sharedMap[key]
mu.Unlock()
return val, ok
}
Astfel, înainte de a citi sau scrie în map, blocăm mutex-ul pentru a evita condițiile de cursă și pentru a asigura o funcționare corectă în medii concurente.