Junior — Middle
Resurslara girişin idarə olunmasında Lock və Semaphore qarşılıqlı istisna mexanizmləri necə fərqlənir?
sobes.tech Süni İntellekt
AI-dan cavab
Lock (qarshi chiqarish) və Semaphore (semafor) sinxronizasiya mexanizmləridir, lakin onlar funksionallıq və tətbiq baxımından fərqlənirlər:
-
Lock (Mutex)
- Resursa eksklüziv giriş təmin etmək üçün nəzərdə tutulmuşdur.
- Yalnız bir axın Lock-u o zaman ələ keçirə bilər.
- Əgər Lock məşğuldursa, digər axınlar onun boşalmasını gözləyir.
- Kritik bölmələri qorumaq üçün istifadə olunur.
-
Semaphore
- Sayğacı var, bu da neçə axının eyni zamanda resursa daxil ola biləcəyini müəyyən edir.
- Bir neçə axına eyni zamanda giriş imkanı verə bilər (məsələn, sayğacı 3 olan semafor 3 axına eyni zamanda girişə imkan verir).
- Məhdud resurslara girişin idarə olunması üçün istifadə olunur.
C# nümunəsi:
// Mutex
Mutex mutex = new Mutex();
mutex.WaitOne(); // əldə etmə
// kritik bölmə
mutex.ReleaseMutex(); // azad etmə
// Semaphore
Semaphore semaphore = new Semaphore(3, 3); // maksimum 3 eyni zamanda giriş
semaphore.WaitOne();
// resursla işləmə
semaphore.Release();
Beləliklə, Lock — bu maksimum sayğacı 1 olan semaforun xüsusi halıdır.