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