Junior — Middle
Објасните у чему се разликују механизми Semaphore и Mutex у контексту управљања приступом ресурсима
sobes.tech АИ
Одговор од АИ
Semaphore i Mutex su mehanizmi sinhronizacije koji se koriste za upravljanje pristupom resursima, ali se razlikuju po nameni i ponašanju:
-
Mutex (međusobno isključivanje) je primitiv koji omogućava da samo jedan tok istovremeno poseduje resurs. Osigurava ekskluzivan pristup. Ako je tok zaključao mutex, ostali će čekati dok se ne oslobodi.
-
Semaphore (brojač dozvola) je opštiji mehanizam koji sadrži brojač koji određuje koliko tokova može istovremeno pristupiti resursu. Na primer, semafor sa brojačem 3 omogućava tri toka da istovremeno rade sa resursom.
Primer u C#:
// Mutex
Mutex mutex = new Mutex();
mutex.WaitOne(); // zaključavanje mutexa
// kritična sekcija
mutex.ReleaseMutex(); // otključavanje
// Semaphore
Semaphore semaphore = new Semaphore(3, 3); // maksimalno 3 toka
semaphore.WaitOne(); // dobijanje dozvole
// kritična sekcija
semaphore.Release(); // oslobađanje dozvole
Ukratko:
- Mutex — za ekskluzivan pristup resursu.
- Semaphore — za ograničavanje broja istovremenih pristupa.
Ovo je ključna razlika pri izboru mehanizma za sinhronizaciju.