Sobes.tech
Junior — Middle

Aké dôsledky majú súčasné zápisy do Mapy z rôznych konkurenčných gorutín?

sobes.tech AI

Odpoveď od AI

V Go štandardná mapa (map) nie je bezpečná pre súčasné čítanie a zápis z viacerých gorútín. Ak niekoľko gorútín súčasne skúsi zapisovať do rovnakej mapy bez synchronizácie, povedie to ku konkurenčným podmienkam, panike počas behu (fatálna chyba: súčasné zápisy do mapy) a nepredvídateľnému správaniu programu.

Aby ste predišli problémom, musíte použiť:

  • Mutexy (sync.Mutex) na ochranu prístupu k mape.
  • Špecializované bezpečné dátové štruktúry, ako je sync.Map.

Príklad s mutexom:

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

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

Bez takejto ochrany môže program neočakávane skončiť.