Mutex vs Semaphore
Mutex-ul este folosit pentru a oferi acces serializat la o parte a unui cod reintrins care nu poate fi executat în paralel de mai multe fire. Un mutex se asigură că un singur cod poate accesa secțiunea controlată la un moment dat. Pentru a obține acces, alte coduri sunt făcute să aștepte până când primul cod iese. Puteți considera că este ca o cheie a unei camere. Persoana care are acces la acea cheie mai întâi. Până când persoana se întoarce înapoi, nimeni altcineva nu poate accesa acea cameră.
Semaphore oferă acces simultan unei resurse partajate unui număr de utilizatori. Pe măsură ce crește numărul de utilizatori care accesează resursele, numărul semaforului se reduce. Odată ce utilizatorii încep să elibereze resursele, numărul semaforului începe să crească din nou. Este folosit de aplicații care necesită sincronizare. Numărul de utilizatori concurenți este restricționat pe baza limitei de semafor. Un semafor poate fi considerat ca o mulțime de chei similare la încuietori similare într-o singură cameră, dar aceste chei sunt limitate în număr. Persoanele care au aceste chei pot împărtăși camera.
Diferențele dintre mutex și semafor:
1. Mutexul este folosit pentru excluderea reciprocă, în timp ce semaforul își găsește utilitatea în ambele cazuri
notificarea și excluderile reciproce.
2. Mutex oferă acces serios la resursele comune, în timp ce semaforul pune o limită
numărul de accesuri concurente.
3. Un mutex funcționează cu câte un fir la un moment dat în timp ce semaforul gestionează fire multiple
împreună.
4. Mutex are un concept de proprietar în cazul în care procesul care blochează mutexul poate numai
redeschideți-l. Nici unul dintre celelalte procese nu poate face acest lucru. Dar în cazul semaforului, așa
restricțiile nu există.
5. Un mutex este un mecanism de blocare în timp ce un semaphore este un mecanism de semnalizare cu
respectarea sincronizării accesului la o resursă.
Rezumat:
1. Semantic și teoretic, atât mutexul cât și semaphorele sunt aceleași. Poate fi
implementate folosind cealaltă, dar practic ambele sunt diferite.
2. Un mutex nu este altceva decât un semafor cu o valoare de număr egală cu una.
3. Un mutex este un semafor cu caracteristici suplimentare cum ar fi proprietatea și inversarea priorităților
protecţie.
4. Un semaphore este un tip de date abstract care controlează accesul la o resursă comună prin
multiple procese într-un mediu de programare paralel.
5. Semaphore își găsește utilizarea în multe sisteme de operare ca primitive de sincronizare.
6. Atât mutexul cât și semaphorele sunt resurse de kernel care sunt utilizate în scopul
sincronizare.