Mutex a Semaphore
Mutex vs Semaphore
Mutex se používá k poskytnutí serializovaného přístupu k části reintrodučního kódu, který nelze provést paralelně více než jedním vláknem. Mutex zajišťuje, že pouze jeden kód může přistupovat k řízenému oddílu najednou. Chcete-li získat přístup, ostatní kódy se vyčkávají, dokud neodejde první kód. Můžete to považovat za klíč k místnosti. Osoba, která má přístup k tomuto klíči, nejprve přijde na první místo. Do té doby, kdy se člověk vrátí zpět, nikdo jiný nemá přístup do této místnosti.
Semaphore umožňuje přístup ke sdílenému zdroji současně několika uživatelům. Při zvyšování počtu uživatelů, kteří přistupují k prostředku, se počet semaforů snižuje. Jakmile uživatelé začnou uvolňovat zdroj, počet semaforů se znovu začne zvyšovat. Používají je aplikace, které vyžadují synchronizaci. Počet souběžných uživatelů je omezen na limitu semaforu. Semafor lze považovat za skupinu podobných klíčů podobných zámků do jedné místnosti, ale tyto klíče jsou omezené. Lidé, kteří mají tyto klíče, mohou sdílet místnost.
Rozdíly mezi mutexem a semaforem:
1. Mutex se používá pro vzájemné vyloučení, zatímco semafor najde v obou případech užitečnost
oznámení a vzájemné vyloučení.
2. Mutex poskytuje sériový přístup k běžným zdrojům, zatímco semafor omezuje
počet souběžných přístupů.
3. Mutex pracuje s jedním vláknem najednou, zatímco semafor spravuje více závitů
spolu.
4. Mutex má koncept vlastníka, kde může proces pouze zablokovat mutex
znovu ji otevřete. Žádný z ostatních procesů to nemůže udělat. Ale v případě semaforu, takový
omezení neexistují.
5. Mutex je uzamykací mechanismus, zatímco semafor je signalizační mechanismus s
s ohledem na synchronizaci přístupu k prostředku.
Souhrn:
1. Sémanticky a teoreticky jsou mutex a semafor stejné. Jeden může být
realizovány s využitím druhého, ale prakticky jsou oba odlišné.
2. Mutex není nic jiného než semafor s hodnotou, která se rovná jedné.
3. Mutex je semafor s dalšími vlastnostmi, jako je vlastnictví a priorita inverze
ochrana.
4. Semafor je abstraktní datový typ, který řídí přístup ke společnému zdroji
více procesů v paralelním programovacím prostředí.
5. Semaphore využívá v mnoha operačních systémech jako synchronizační primitivu.
6. Mutex a semafor jsou jádrové zdroje, které se používají pro účely
synchronizace.