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