Junior — Middle
У чему се разликују механизам међусобног искључења Lock и Semaphore у управљању приступом ресурсима?
sobes.tech АИ
Одговор од АИ
Lock (međusobno isključivanje) i Semaphore (semafor) su mehanizmi za sinhronizaciju, ali se razlikuju po funkcionalnosti i primeni:
-
Lock (Mutex)
- Namenjen je za obezbeđivanje ekskluzivnog pristupa resursu.
- Samo jedan tok može da poseduje Lock u datom trenutku.
- Ako je Lock zauzet, drugi tokovi čekaju njegovo oslobađanje.
- Koristi se za zaštitu kritičnih sekcija.
-
Semaphore
- Ima brojač koji određuje koliko tokova može istovremeno da pristupi resursu.
- Može dozvoliti pristup više tokova istovremeno (npr. semafor sa brojačem 3 omogućava 3 toka da pristupe istovremeno).
- Koristi se za upravljanje pristupom ograničenim resursima.
Primer u C#:
// Mutex
Mutex mutex = new Mutex();
mutex.WaitOne(); // preuzimanje
// kritična sekcija
mutex.ReleaseMutex(); // oslobađanje
// Semaphore
Semaphore semaphore = new Semaphore(3, 3); // maksimalno 3 istovremena pristupa
semaphore.WaitOne();
// rad sa resursom
semaphore.Release();
Dakle, Lock je poseban slučaj semafora sa maksimalnim brojačem 1.