Middle — Middle+
Оё имкон дорад, ки дар муҳити бисёртарифӣ навиштан ба контейнери map бехатар бошад бе ҳамоҳангсозии иловагӣ?
sobes.tech AI
Ҷавоб аз AI
Дар Go, харитаи стандартӣ (map) барои навиштан дар муҳити бисёрсоҳавӣ бехатар нест. Агар чанд goroutine ҳамзамон дар map нависанд бе ҳамоҳангсозӣ, ин ба ҳолатҳои рақобат ва паника дар вақти иҷро оварда мерасонад.
Барои навиштани бехатар дар map дар муҳити бисёрсоҳавӣ, бояд истифода бурд:
- sync.Mutex ё sync.RWMutex барои бастани дастрасӣ;
- sync.Map, иҷрои бехатари map аз китобхонаи стандартӣ.
Масалан бо sync.Mutex:
var mu sync.Mutex
var m = make(map[string]int)
func safeWrite(key string, value int) {
mu.Lock()
m[key] = value
mu.Unlock()
}
Бе чунин ҳамоҳангсозӣ, навиштан ба map бехатар нест.