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
}
Այսպիսով, միաժամանակյա ընթերցումը առանց գրառման անվտանգ է, բայց գրառման դեպքում անհրաժեշտ է սինխրոնիզացիա։