Mutex vs Semaphore
Mutex sa používa na zabezpečenie sériového prístupu k časti kódu pre opakovaného zadania, ktorý nemôže byť vykonaný paralelne viac ako jedným vláknom. Mutex zaisťuje, že iba jeden kód má prístup k kontrolovanej sekcii naraz. Na získanie prístupu sú potrebné ďalšie kódy, ktoré čakajú na ukončenie prvého kódu. Môžete to považovať za kľúč od miestnosti. Osoba, ktorá má prístup k tomuto kľúču, je na prvom mieste. Kým sa osoba nevráti späť, do tejto miestnosti nemá prístup nikto iný.
Semaphore umožňuje prístup k zdieľanému zdroju viacerým používateľom súčasne. So zvyšujúcim sa počtom používateľov pristupujúcich k prostriedku sa znižuje počet semaforov. Keď používatelia začnú uvoľňovať prostriedok, počet semaforov začne znova stúpať. Používa sa v aplikáciách, ktoré vyžadujú synchronizáciu. Počet súbežných používateľov je obmedzený na základe semaforového limitu. Semafor možno považovať za skupinu podobných kľúčov k podobným zámkom do jednej miestnosti, ale ich počet je obmedzený. Ľudia, ktorí majú tieto kľúče, môžu zdieľať izbu.
Rozdiely medzi mutexom a semaforom:
1. Mutex sa používa na vzájomné vylúčenie, zatiaľ čo semafor nájde svoje využitie v oboch prípadoch
oznámenia a vzájomné vylúčenia.
2. Mutex poskytuje sériový prístup k spoločným zdrojom, zatiaľ čo semafor stanovuje limit
počet súbežných prístupov.
3. Mutex pracuje súčasne s jedným vláknom, zatiaľ čo semafor riadi viac vlákien
spolu.
4. Mutex má koncepciu vlastníka, ak je to možné iba pri postupe, ktorý blokuje mutex
znovu ho otvorte. Žiadny z ostatných procesov tak nemôže urobiť. Ale v prípade semafora, napr
obmedzenia neexistujú.
5. Mutex je blokovací mechanizmus, zatiaľ čo semafor je signalizačný mechanizmus s
rešpektovanie synchronizácie prístupu k prostriedku.
Zhrnutie:
1. Sémanticky a teoreticky sú mutex aj semafor rovnaké. Jeden môže byť
implementované s využitím druhého, ale prakticky sú odlišné.
2. Mutex nie je nič iné ako semafor s hodnotou počtu rovnajúcou sa jednému.
3. Mutex je semafor s ďalšími vlastnosťami, ako je vlastníctvo a inverzia priority
ochrana.
4. Semafor je abstraktný typ údajov, ktorý riadi prístup k spoločnému zdroju
viac procesov v prostredí paralelného programovania.
5. Semaphore ho používa v mnohých operačných systémoch ako primitívne pre synchronizáciu.
6. Mutex aj semafor sú zdroje jadra, ktoré sa používajú na tento účel
synchronizácia.