Sobes.tech
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.