Sobes.tech
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.