Rozdiel medzi mutexom a semaforom

Mutex vs Semafor

Mutex je analogický k jednému kľúču od miestnosti. Osoba, ktorá drží kľúč, ktorý je analogický so závitom, je jediná, kto má prístup do miestnosti. Osoba s prístupom sa potom bude musieť vzdať kľúča od ďalšej osoby v rade. Mutex preto môže uvoľniť iba vlákno, ktoré ho získa.

Mutex sa bežne používa na serializáciu prístupu do sekcie reentrantného kódu „druh kódu, ktorý nie je možné vykonať niekoľkými vláknami naraz. Do sekcie je povolené iba jedno vlákno. To núti ostatné vlákna vo fronte čakať. Kým vlákno získa prístup, bude musieť počkať, kým sa vlákno nevzdá sekcie.

Pri použití rovnakej analógie v mutexe sú semafory počtom podobných kľúčov, ktoré majú 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 osôb (vlákien), ktoré vstupujú do miestnosti alebo z nej vystupujú. Ak je 5 miestností a všetky sú obsadené, počet semaforov je nula. Ak dvaja opustia miestnosť, počet je dva a dva kľúče budú dané ďalším dvom vo fronte.

To znamená, že semafory môžu súbežne signalizovať akékoľvek vlákno alebo proces a sú ideálne pre aplikácie, ktoré vyžadujú synchronizáciu. Napriek tomu sa semafory používajú na efektívne obmedzenie počtu súbežných používateľov spoločného zdroja na základe maximálneho počtu semaforov.

V zásade teda možno mutex považovať za semafor s hodnotou jedna.

Zníženie a zvýšenie semaforu závisí od toho, či vlákna požadujú prístup k spoločnému zdroju alebo opustia sekciu.

Teoreticky sú mutexové a (binárne) semafory sémanticky podobné. Implementáciu mutexu je možné vykonať pomocou semaforov, a tak je to naopak. V praktickom zmysle však môžu byť trochu odlišné.

Mutexy sa majú používať iba na vzájomné vylúčenie a binárne semafory sa majú používať na vzájomné vylúčenie a oznamovanie udalostí. Napriek tomu, že sú veľmi podobné z hľadiska implementácie a všeobecnej sémantiky, používajú sa odlišne.

Zhrnutie:

1. Mutex sa zvyčajne používa na serializáciu prístupu k spoločnému zdroju, zatiaľ čo semafor je množstvo súbežných prístupov.

2. Mutex je ako semafor s počtom jedna. 3. Mutex umožňuje prístup iba k jednému vláknu, zatiaľ čo semafory môžu súbežne signalizovať akékoľvek vlákno alebo proces.

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 používa iba na vzájomné vylúčenie.

1 komentár

  1. Ďakujem za uverejnenie tohto článku, jasne som pochopil rozdiel ……………… :)

Prečítajte si viac o: ,