Sobes.tech
Junior — Middle

Koje posledice nastaju kada se istovremeno zapisuje u Map iz različitih konkurentnih gorutina?

sobes.tech АИ

Одговор од АИ

U Go, standardna mapa (map) nije sigurna za istovremeni pristup za čitanje i pisanje iz više gorutina. Ako više gorutina istovremeno pokušaju da pišu u istu mapu bez sinhronizacije, to će dovesti do uslova trke, panike u runtime-u (fatali greška: istovremeni zapisi u mapu) i nepredvidivog ponašanja programa.

Da biste izbegli probleme, morate koristiti:

  • Mutex (sync.Mutex) za zaštitu pristupa mapi.
  • Specijalizovane strukture podataka bezbedne za konkurentni pristup, poput sync.Map.

Primer sa mutex-om:

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

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

Bez ove zaštite, program može neočekivano da se zatvori.