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