Junior — Middle
Hogyan viselkedik a program, ha egyidejűleg konkurens olvasás történik a map-ből?
sobes.tech MI
Válasz az MI-től
Go nyelvben a térkép egyidejű biztonságos olvasása nem okoz pánikot vagy hibát. A problémák akkor merülnek fel, ha egyszerre történik írás vagy olvasás és írás. Ha a programban csak néhány goroutine olvassa a térképet anélkül, hogy módosítaná, ez biztonságos. De ha legalább egy goroutine módosítja a térképet, szinkronizációs mechanizmusokat, például a sync.RWMutex vagy a sync.Map használata szükséges.
Biztonságos olvasási példa a sync.RWMutex használatával:
var m = make(map[string]int)
var mu sync.RWMutex
func read(key string) int {
mu.RLock()
defer mu.RUnlock()
return m[key]
}
func write(key string, value int) {
mu.Lock()
defer mu.Unlock()
m[key] = value
}
Így a párhuzamos olvasás írás nélkül biztonságos, de írás esetén szinkronizáció szükséges.