Mutex a Semaphore

Anonim

Mutex vs Semaphore

Mutex je obdobný jako jediný klíč k místnosti. Osoba, která drží klíč, což je analogické nitě, je jediný, kdo může mít přístup do místnosti. Osoba s přístupem pak bude muset dát klíči další osobě v řádku. Proto mutex může být uvolněn pouze podprocesem, který jej získává.

Mutex se normálně používá k serializaci přístupu do části reentrantového kódu "" druh kódu, který nelze provést několika vlákny najednou. Do sekce je povoleno pouze jedno vlákno. To nutí ostatní vlákna ve frontě čekat. Předtím, než vlákno získá přístup, bude muset počkat, dokud vlákno předtím, než se vzdává sekce.

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

Tímto způsobem semafory mohou být souběžně 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ů.

Takže v podstatě mutex může být považován za semafor s hodnotou jednoho.

Snížení a zvýšení semaforu závisí na tom, zda vlákna vyžadují přístup ke společnému zdroji nebo opuštění oddílu.

Teoreticky, mutex a (binární) semafory jsou sémanticky podobné. Implementace mutexu lze provést pomocí semaforů a tak je to naopak. V praktickém smyslu však mohou být trochu jiné.

Mutexy jsou určeny k použití pouze pro vzájemné vyloučení a binární semafory jsou určeny k použití pro vzájemné vyloučení a oznamování událostí. I když jsou velmi podobné z hlediska implementace a obecné sémantiky, používají se jinak.

Souhrn:

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

2. Mutex je jako semafor s počítáním jednoho. 3. Mutex umožňuje jedinému vláknu mít přístup, zatímco semafory mohou být současně signalizovány nějakým 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 je používán pouze pro vzájemné vyloučení.