Junior — Middle
Eyni funksiyada eyni zamanda bir neçə kilidləmə mexanizmi (Mutex) tətbiq etmək mümkündürmü?
sobes.tech Süni İntellekt
AI-dan cavab
Bəli, Go dilində eyni zamanda bir funksiyada bir neçə mutex (Mutex) istifadə etmək mümkündür. Bu, müxtəlif resursları və ya əlaqəsiz məlumat hissələrini qorumaq lazım olduqda, tez-tez rast gəlinən bir haldır. Əsas odur ki, qarşılıqlı bloklanmalardan (deadlock) qaçınmaq, yəni bir mutex başqa birinin sərbəst buraxılmasını gözləyərkən, o da ilk mutexi gözləyir.
Bir neçə mutexin istifadəsinə nümunə:
var mu1 sync.Mutex
var mu2 sync.Mutex
func updateResources() {
mu1.Lock()
defer mu1.Unlock()
// Birinci resursla işləmək
mu2.Lock()
defer mu2.Unlock()
// İkinci resursla işləmək
}
Deadlocklardan qaçınmaq üçün, mutexləri hər zaman kodun bütün yerlərində eyni ardıcıllıqla kilidləmək tövsiyə olunur.