Junior — Middle
Ի՞նչ տեսակների փոխադարձ բացառումներ (Mutex) են իրականացված Go-ի ստանդարտ գրադարանում։
sobes.tech AI
Պատասխան AI-ից
Go-ի ստանդարտ գրադարանում իրականացված է հիմնական փոխադարձ բացառության տեսակ՝ sync.Mutex: Սա պարզ մյուտեքս է, որը ապահովում է փակել և բացել՝ կոդի քննադատական հատվածները միաժամանակյա մուտքից պաշտպանելու համար:
Բացի այդ, կա sync.RWMutex — մյուտեքսի ընդլայնված տարբերակ, որը թույլ է տալիս միաժամանակ մի քանի ընթերցողներին պահել փակումը, բայց գրառումը բացառիկորեն արգելվում է:
sync.Mutex օգտագործման օրինակ՝
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Եվ օրինակ sync.RWMutex-ով՝
var rwMu sync.RWMutex
var data int
func readData() int {
rwMu.RLock()
defer rwMu.RUnlock()
return data
}
func writeData(val int) {
rwMu.Lock()
defer rwMu.Unlock()
data = val
}