Mutex vs Semaphore
Mutex je obdobou jedného kľúča od miestnosti. Osoba, ktorá drží kľúč, ktorý je podobný vláknu, je jediný, kto môže mať prístup do miestnosti. Osoba, ktorá má prístup, bude potom musieť odovzdať kľúč ďalšej osobe v rade. Z tohto dôvodu môže byť mutex uvoľnený iba vláknom, ktoré ho získa.
Mutex sa bežne používa na serializáciu prístupu do časti kódu reentrantu, čo je druh kódu, ktorý nie je možné vykonať niekoľkými vláknami súčasne. Do sekcie je povolený iba jeden závit. To núti ostatné vlákna vo fronte čakať. Než vlákno získa prístup, bude musieť počkať, kým vlákno opustí sekciu.
S použitím rovnakej analógie v mutexe sú semafory počet podobných klávesov, ktoré môžu získať prístup k rovnakému počtu miestností s podobnými zámkami. Semafor alebo hodnota počtu semaforov bude závisieť od počtu ľudí (nití), ktorí vstúpia alebo vystúpia z miestnosti. Ak je k dispozícii 5 miestností a všetky sú obsadené, počet semaforov je nula. Ak dvaja opustia miestnosť, potom je ich počet dva a tieto dva tlačidlá sú pridelené ďalším dvom vo fronte.
S tým už bolo povedané, semafory môžu byť súčasne signalizované akýmkoľvek vláknom alebo procesom a sú ideálne pre aplikácie, ktoré vyžadujú synchronizáciu. Semafory sa však používajú na účinné obmedzenie počtu súbežných používateľov spoločného zdroja na základe maximálneho počtu semaforov..
V podstate teda možno mutex považovať za semafor s hodnotou jedného.
Dekrement a prírastok semafora závisia od toho, či vlákna požadujú prístup k spoločnému prostriedku alebo opúšťajú sekciu..
Teoreticky sú mutexové a (binárne) semafory sémanticky podobné. Implementácia mutexu sa môže vykonávať pomocou semaforov, a tak je to aj naopak. V praktickom zmysle však môžu byť trochu iné.
Mutexy sa majú používať iba na vzájomné vylúčenie a binárne semafory sa používajú na vzájomné vylúčenie a oznamovanie udalostí. Hoci sú z hľadiska implementácie a všeobecnej sémantiky veľmi podobné, používajú sa odlišne.
Zhrnutie:
1. Mutex sa zvyčajne používa na serializáciu prístupu k spoločnému prostriedku, zatiaľ čo semafor predstavuje niekoľko súbežných prístupov.
2. Mutex je ako semafor s počtom jeden.
3. Mutex umožňuje prístup iba jednému vláknu, zatiaľ čo semafory môžu byť súčasne signalizované akýmkoľvek vláknom alebo procesom.
4. Semafory sú ideálne na synchronizáciu a často sa používajú na oznamovanie udalostí a vzájomné vylúčenie, zatiaľ čo mutex sa uplatňuje iba na vzájomné vylúčenie.