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