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