Junior — Middle
Կարող եք բացատրել, թե ինչ է փոխադարձ բացառումը (Mutex) և ինչպես է այն աշխատում?
sobes.tech AI
Պատասխան AI-ից
Mutual exclusion (Mutex) — բարդ մեխանիզմ է, որը երաշխավորում է, որ տվյալ պահին միայն մեկ գորուտին (գործընթաց) կարող է մուտք գործել որոշակի ռեսուրս կամ կոդի քննադատական հատված:
Go-ում դրա համար օգտագործվում է sync.Mutex տիպը: Երբ գորուտին Lock() է կանչում, այն բլոկավորում է մյուտեքսը, և մյուս գորուտիները, որոնք փորձում են կանչել Lock(), կսպասեն մինչև մյուտեքսը բացվի Unlock()-ով:
Օրինակ:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
Այս օրինակով, increment անվտանգ կերպով մեծացնում է counter-ի արժեքը, կանխելով միաժամանակյա մուտքը մի քանի գորուտիներից։