Junior — Middle
Come sincronizzare l'accesso a una risorsa condivisa usando una struttura Map e un meccanismo Mutex?
sobes.tech AI
Risposta dell'AI
In Go, per sincronizzare l'accesso a una struttura condivisa Map, si utilizza generalmente un mutex (sync.Mutex), poiché la mappa non è sicura per l'accesso concorrente.
Esempio:
import (
"sync"
)
var (
mu sync.Mutex
sharedMap = make(map[string]int)
)
func writeToMap(key string, value int) {
mu.Lock() // blocca l'accesso
sharedMap[key] = value
mu.Unlock() // sblocca
}
func readFromMap(key string) (int, bool) {
mu.Lock()
val, ok := sharedMap[key]
mu.Unlock()
return val, ok
}
In questo modo, prima di leggere o scrivere nella mappa, si blocca il mutex per evitare condizioni di gara e garantire un funzionamento corretto in ambienti concorrenti.