Sobes.tech
Junior — Middle

Mutex-in işləmə prinsipi və çox iş parçacığı proqramlarında istifadəsi haqqında izah edə bilərsinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

Mutual exclusion (Mutex) — bu mexanizmi sinxronizasiya, bir neçə axınların ümumi resursa (məsələn, dəyişən və ya fayl) eyni vaxtda girişini qarşısını almaq üçün istifadə olunur. Mutex hər zaman yalnız bir axının kilidə sahib olmasını və kritik bölməni icra etməsini təmin edir.

İş prinsipi:

  • Axın, kritik bölməyə daxil olmadan əvvəl mutexi əldə etməyə çalışır.
  • Əgər mutex boşdursa, axın giriş əldə edir və davam edir.
  • Əgər mutex başqa bir axın tərəfindən tutulursa, cari axın bloklanır və sərbəst buraxılmasını gözləyir.
  • Resursla işləmə tamamlandıqdan sonra, axın mutexi sərbəst buraxır və digər axınların davam etməsinə imkan verir.

Go dilində, bu sync.Mutex tipi ilə həyata keçirilir:

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()         // mutexi kilidlə
    counter++         // kritik bölmə
    mu.Unlock()       // mutexi sərbəst burax
}

Mutex istifadəsi, yarış şərtlərini qarşısını alır və paralel icra zamanı məlumatların bütövlüyünü təmin edir.