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-ის მნიშვნელობას, თავიდან აცილებს ერთდროულ წვდომას რამდენიმე გოროტინიდან.