Mutex vs Semaphore
A mutex analóg a szoba egyetlen gombjával. A szálhoz hasonló kulcsot tartó személy az egyetlen, aki beléphet a helyiségbe. A hozzáféréssel rendelkező személynek el kell adnia a kulcsot a sorban lévő következő személyhez. Ezért a mutexet csak a szálat szabadíthatja fel, amely azt megszerezte.
A mutexet rendszerint arra használják, hogy sorozatba helyezzék a visszatérő kód egy szekciójához való hozzáférést, egy olyan típusú kódot, amelyet több szál egyszerre nem képes végrehajtani. Csak egy szál megengedett egy szakaszba. Ez arra készteti a sorban lévő többi szálat, hogy várjanak. Mielőtt egy szál hozzáférhet, meg kell várnia, amíg a szál el nem adja a szekciót.
Ugyanazt az analógiát használva a mutexben, a szemaforok a hasonló kulcsok száma, amelyek azonos számú szobához hozzáférhetnek hasonló zárakkal. A szemafor vagy a szemaforok száma az emberek (szálak) számától függ, akik belépnek vagy kilépnek a helyiségből. Ha 5 szoba van és mindegyik el van foglalva, akkor a szemaforszám nulla. Ha kettő elhagyja a helyiséget, akkor a gróf kettő és a két kulcs a sorban következő kettőhöz kerül.
Ennek ellenére a szemaforokat bármilyen szál vagy folyamat egyidejűleg jelezheti, és ideálisak azokhoz az alkalmazásokhoz, amelyek szinkronizálást igényelnek. Ennek ellenére a szemaforokat arra használják, hogy hatékonyan korlátozzák a közös erőforrás egyidejű felhasználói számát a maximális szemaforszám alapján.
Tehát alapvetően a mutexet egy szemafornak lehet tekinteni, amelynek értéke egy.
A szemafor csökkenése és növekedése attól függ, hogy a szálak hozzáférést kérnek-e a közös erőforráshoz, vagy elhagyják-e a szakaszt.
Az elméletben a mutex és a (bináris) szemaforok szemantikailag hasonlóak. A mutex megvalósítása szemaforok segítségével valósítható meg, és fordítva is. Gyakorlati szempontból azonban kicsit más lehetnek.
A mutexeket csak a kölcsönös kizárásra kell alkalmazni, a bináris szemaforokat pedig a kölcsönös kizárásra és az események értesítésére szánják. Bár a megvalósítás és az általános szemantika szempontjából nagyon hasonlóak, eltérően használják őket.
Összefoglaló:
1. A Mutex-et általában egy közös erőforráshoz való hozzáférés sorosítására használják, míg a szemafor számos egyidejű hozzáférés.
2. A Mutex olyan, mint egy szemafor, amelynek száma egy.
3. A Mutex csak egyetlen szálhoz fér hozzá, míg a szemaforákat bármilyen szál vagy folyamat egyidejűleg jelezheti..
4. A szemaforok ideálisak a szinkronizálásra, és gyakran használják az események bejelentésére és a kölcsönös kizárásra, míg a mutexet csak a kölcsönös kizárásra alkalmazzák..