Sobes.tech
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-ի արժեքը, կանխելով միաժամանակյա մուտքը մի քանի գորուտիներից։