Sobes.tech
Junior — Middle

Jak synchronizovat přístup ke sdílenému zdroji pomocí struktury Map a mechanismu Mutex?

sobes.tech AI

Odpověď od AI

V jazyce Go se pro synchronizaci přístupu ke sdílené struktuře Map obvykle používá mutex (sync.Mutex), protože map není vlákny bezpečná.

Příklad:

import (
    "sync"
)

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

func writeToMap(key string, value int) {
    mu.Lock()           // zamkne přístup
    sharedMap[key] = value
    mu.Unlock()         // odemkne
}

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

Tímto způsobem před čtením nebo zápisem do mapy uzamkneme mutex, abychom zabránili závodním podmínkám a zajistili správnou funkčnost v konkurenčním prostředí.