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.