Rozdíl mezi mutexem a semaforem

Mutex vs Semaphore

Mutex je analogický s jedním klíčem do místnosti. Osoba, která drží klíč, který je analogický vláknu, je jediný, kdo může mít přístup do místnosti. Osoba s přístupem se pak bude muset vzdát klíče další osobě v řadě. Mutex proto může být uvolněn pouze vláknem, které jej získá.

Mutex se běžně používá k serializaci přístupu k části reentrantového kódu, což je druh kódu, který nelze provést pomocí několika vláken najednou. Do sekce je povoleno pouze jedno vlákno. To přinutí ostatní vlákna ve frontě čekat. Než vlákno získá přístup, bude muset počkat, až vlákno před tím, než se vzdá sekce.

Při použití stejné analogie v mutexu jsou semafory počet podobných klíčů, které mají přístup ke stejnému počtu místností s podobnými zámky. Semafor nebo hodnota počtu semaforů bude záviset na počtu lidí (vláken), kteří vstupují nebo vystupují z místnosti. Pokud je k dispozici 5 místností a všechny jsou obsazeny, pak je počet semaforů nulový. Pokud dva opustí místnost, počet je dva a obě klávesy jsou dány dalším dvěma ve frontě.

S tím bylo řečeno, semafory mohou být současně signalizovány jakýmkoli vláknem nebo procesem a jsou ideální pro aplikace, které vyžadují synchronizaci. Nicméně semafory se používají k účinnému omezení počtu souběžných uživatelů společného zdroje na základě maximálního počtu semaforů..

V zásadě tedy lze mutex považovat za semafor s hodnotou jednoho.

Pokles a přírůstek semaforu závisí na tom, zda vlákna požadují přístup ke společnému prostředku nebo opouštějí sekci..

Teoreticky jsou mutex a (binární) semafory sémanticky podobné. Implementace mutexu může být prováděna pomocí semaforů a tak je tomu i opačně. V praktickém slova smyslu však mohou být trochu jiné.

Mutexy jsou určeny pouze pro vzájemné vyloučení a binární semafory jsou určeny pro vzájemné vyloučení a oznámení událostí. Ačkoli jsou velmi podobné, pokud jde o implementaci a obecnou sémantiku, používají se odlišně.

Souhrn:

1. Mutex se obvykle používá k serializaci přístupu ke společnému prostředku, zatímco semafor je řada souběžných přístupů.

2. Mutex je jako semafor s počtem jednoho.
3. Mutex umožňuje přístup pouze jednom vláknu, zatímco semafory mohou být současně signalizovány jakýmkoli vláknem nebo procesem.

4. Semafory jsou ideální pro synchronizaci a často se používají pro oznámení událostí a vzájemné vyloučení, zatímco mutex se používá pouze pro vzájemné vyloučení.