Junior — Middle
Milyen helyzetek fordulhatnak elő egy térkép típusú tárolóba történő egyidejű írás során?
sobes.tech MI
Válasz az MI-től
Go nyelvben az alapértelmezett térkép (map) nem biztonságos több goroutine egyidejű olvasására és írására. Ha több goroutine ír adatokat a map-be szinkronizálás nélkül, az runtime pánikot okozhat "concurrent map writes" üzenettel vagy a program kiszámíthatatlan viselkedésével.
Az ilyen problémák elkerülése érdekében szinkronizációs mechanizmusokat kell használni, például mutexet (sync.Mutex) vagy speciális struktúrákat, mint például a sync.Map, amelyek biztonságosak a párhuzamos hozzáféréshez.
Példa mutex-szel:
var mu sync.Mutex
var m = make(map[string]int)
func writeToMap(key string, value int) {
mu.Lock()
defer mu.Unlock()
m[key] = value
}
Ezen védelem nélkül a párhuzamos írás adatvesztéshez vagy a program váratlan leállásához vezethet.