Sobes.tech
Junior — Middle

Hogyan szinkronizáljuk a hozzáférést egy közös erőforráshoz Map struktúra és Mutex mechanizmus segítségével?

sobes.tech MI

Válasz az MI-től

Go nyelven a közös Map struktúrához való hozzáférés szinkronizálására általában mutexet (sync.Mutex) használnak, mivel a map nem szálbiztos.

Példa:

import (
    "sync"
)

var (
    mu sync.Mutex
    sharedMap = make(map[string]int)
)

func writeToMap(key string, value int) {
    mu.Lock()           // zárolja a hozzáférést
    sharedMap[key] = value
    mu.Unlock()         // feloldja
}

func readFromMap(key string) (int, bool) {
    mu.Lock()
    val, ok := sharedMap[key]
    mu.Unlock()
    return val, ok
}

Így a map-be való olvasás vagy írás előtt zároljuk a mutexet, hogy elkerüljük a versenyhelyzeteket és biztosítsuk a helyes működést párhuzamos környezetben.