Sobes.tech
Junior — Middle

Explicați în ce constau diferențele dintre mecanismele Semaphore și Mutex în contextul gestionării accesului la resurse

sobes.tech AI

Răspuns de la AI

Semaforul și Mutex sunt mecanisme de sincronizare utilizate pentru gestionarea accesului la resurse, dar diferă în scop și comportament:

  • Mutex (excludere mutuală) este un primitiv care permite unui singur fir de execuție să dețină o resursă simultan. Asigură acces exclusiv. Dacă un fir a blocat mutex-ul, altele vor aștepta până când acesta este eliberat.

  • Semaforul (contor de permisiuni) este un mecanism mai general care conține un contor ce determină câte fire pot accesa simultan o resursă. De exemplu, un semafor cu un contor de 3 va permite trei fire să lucreze cu resursa în același timp.

Exemplu în C#:

// Mutex
Mutex mutex = new Mutex();

mutex.WaitOne(); // blocare mutex
// secțiune critică
mutex.ReleaseMutex(); // eliberare

// Semafor
Semaphore semaphore = new Semaphore(3, 3); // maximum 3 fire

semaphore.WaitOne(); // obține permisiunea
// secțiune critică
semaphore.Release(); // eliberează permisiunea

Rezumat:

  • Mutex — pentru acces exclusiv la o resursă.
  • Semafor — pentru limitarea numărului de accesări simultane.

Aceasta este diferența cheie la alegerea unui mecanism de sincronizare.