Junior — Middle
Төрттүрлі атаандашып жаткан gorutinтерден бир убакта Mapка жазуу кандай натыйжаларга алып келет?
sobes.tech AI
AIден жооп
Goда стандарттык картасы (map) бир нече горутинден бир убакта окуу жана жазуу үчүн коопсуз эмес. Эгер бир нече горутин бир убакта бирдей картага жазууга аракет кылса, бул маалыматтардын атаандаштыгы, иштөө учурунда паника (фаталдык каталар: бир нече картага бир убакта жазуу) жана программа күтүлбөгөндөй иштөө менен аяктайт.
Маселелердин алдын алуу үчүн:
- Mapке кирүүнү коргоо үчүн mutexтер (sync.Mutex) колдонуу керек.
- Специалдаштырылган, көптөгөн иштөө үчүн коопсуз структуралар, мисалы, sync.Map.
Mutex менен мисал:
var mu sync.Mutex
var m = make(map[string]int)
func write(key string, value int) {
mu.Lock()
m[key] = value
mu.Unlock()
}
Бул коргоо жок болсо, программа күтүлбөгөндөй жабылышы мүмкүн.