Sobes.tech
Junior — Middle

Koje situacije mogu nastati pri istovremenom zapisivanju u skladište tipa mapa?

sobes.tech АИ

Одговор од АИ

U Go jeziku, standardna mapa (map) nije sigurna za istovremeni čitanje i pisanje iz više gorutina. Ako više gorutina istovremeno pišu podatke u mapu bez sinhronizacije, to može dovesti do panike u runtime-u sa porukom "concurrent map writes" ili do nepredvidivog ponašanja programa.

Da biste izbegli takve probleme, morate koristiti mehanizme sinhronizacije, kao što su mutex (sync.Mutex) ili specijalizovane strukture, poput sync.Map, koje su sigurne za konkurentan pristup.

Primer sa mutex-om:

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

func writeToMap(key string, value int) {
    mu.Lock()
    defer mu.Unlock()
    m[key] = value
}

Bez takve zaštite, istovremeni zapis može dovesti do oštećenja podataka ili neočekivanog zatvaranja programa.