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.