Junior — Middle
Kokios situacijos gali iškilti rašant vienu metu į žemėlapio tipo saugyklą?
sobes.tech AI
Atsakymas iš AI
Go kalboje standartinė kortelė (map) nėra saugi vienu metu skaityti ir rašyti iš kelių gorutinių. Jei keli gorutinai vienu metu rašo duomenis į map be sinchronizacijos, tai gali sukelti veikimo klaidą su pranešimu "concurrent map writes" arba nenuspėjamą programos elgesį.
Kad išvengtumėte tokių problemų, reikia naudoti sinchronizacijos mechanizmus, pvz., mutex (sync.Mutex) arba specializuotas struktūras, kaip sync.Map, kurios yra saugios konkurenciniam prieigai.
Pavyzdys su mutex:
var mu sync.Mutex
var m = make(map[string]int)
func writeToMap(key string, value int) {
mu.Lock()
defer mu.Unlock()
m[key] = value
}
Be tokios apsaugos vienu metu rašymas gali sukelti duomenų sugadinimą arba netikėtą programos užbaigimą.