Junior — Middle
Ako synchronizovať prístup ku spoločnému zdroju pomocou štruktúry Map a mechanizmu Mutex?
sobes.tech AI
Odpoveď od AI
V jazyku Go sa na synchronizáciu prístupu ku spoločnej štruktúre Map zvyčajne používa mutex (sync.Mutex), pretože map nie je bezpečná pre viacvláknové prostredie.
Príklad:
import (
"sync"
)
var (
mu sync.Mutex
sharedMap = make(map[string]int)
)
func writeToMap(key string, value int) {
mu.Lock() // zamkne prístup
sharedMap[key] = value
mu.Unlock() // odomkne
}
func readFromMap(key string) (int, bool) {
mu.Lock()
val, ok := sharedMap[key]
mu.Unlock()
return val, ok
}
Týmto spôsobom pred čítaním alebo zapisovaním do mapy zamkneme mutex, aby sme zabránili podmienkam súťaže a zabezpečili správnu funkciu v konkurenčnom prostredí.