Junior — Middle
Барнома чӣ гуна рафтор мекунад, агар ҳамзамон хондани рақобатӣ аз харита анҷом дода шавад?
sobes.tech AI
Ҷавоб аз AI
В Go, ҳамзамон бехатар хондан аз харита бидуни паника ё хатоҳо ба амал намеояд. Мушкилотҳо вақте рӯй медиҳанд, ки ҳамзамон навиштан ё хондан ва навиштан сурат мегирад. Агар дар барнома танҳо чанд goroutine арзишҳоро аз харита мехонад бидуни тағир додан, ин бехатар аст. Аммо агар ҳадди ақал як goroutine харитаро тағир диҳад, лозим аст, ки механизмҳои ҳамоҳангсозӣ, мисли sync.RWMutex ё sync.Map, истифода шаванд.
Масалан барои хондани бехатар бо истифода аз sync.RWMutex:
var m = make(map[string]int)
var mu sync.RWMutex
func read(key string) int {
mu.RLock()
defer mu.RUnlock()
return m[key]
}
func write(key string, value int) {
mu.Lock()
defer mu.Unlock()
m[key] = value
}
Ин гуна, хондани ҳамзамон бидуни навишт бехатар аст, аммо дар ҳолати навишт, ҳамоҳангсозӣ зарур аст.