A különbség a Mutex és a Semaphore között A különbség

Anonim

Mutex vs Semaphore

A mutex analóg a szobának egyetlen kulcsával. A kulcsot tartó személy, aki hasonló a szálhoz, az egyetlen, aki hozzáférhet a szobához. A hozzáféréssel rendelkező személynek fel kell adnia a kulcsait a soron következő személynek. Ezért egy mutexet csak akkor szabad kiadni, ha a szálat megszerzi.

A mutexet rendszerint egy "" visszatérő kód egy szakaszának "" sorozathoz való hozzárendelésére használják, amely egyfajta kódot nem képes egyszerre több szálon végrehajtani. Csak egy szál van megengedett egy szekcióban. Ez arra kényszeríti a többi szálat, hogy várjon. Mielőtt egy téma hozzáférést kap, akkor meg kell várnia, amíg a téma elhagyja a szakaszt.

Ugyanazt az analógiát alkalmazva a mutexben a szemaforok olyan hasonló kulcsok száma, amelyek ugyanolyan számú szobát férhetnek hozzá hasonló zárhoz. A szemafor vagy a szemaforemény számának értéke attól függ, hogy hány ember (szál) van, aki bejut vagy kilép a szobából. Ha 5 szoba van, és mindegyikük foglalt, akkor a szemaforaszám nulla. Ha kettő elhagyja a szobát, akkor a szám két, és a két kulcsot a következő kettőnek adják a sorban.

Ezzel azt mondhatjuk, hogy a szemaforokat egyidejűleg bármilyen szál vagy folyamat jelzi, és ideálisak azoknak az alkalmazásoknak, amelyek szinkronizálást igényelnek. Mindazonáltal a semapórákat arra használják, hogy hatékonyan korlátozzák a közös erőforrások egyidejű felhasználóinak számát a maximális szemaforaszám alapján.

Tehát alapvetően egy mutex tekinthető szemafornak, amelynek értéke egy.

A szemaforrás csökkentése és növekménye 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 szekciót.

Elméletileg a mutex és a (bináris) szemaforák szemantikailag hasonlóak. A mutex megvalósítása szemaforák segítségével történhet, és éppen ellenkezőleg. Azonban a gyakorlati értelemben, lehetnek egy kicsit más.

A mutexeket kizárólag a kölcsönös kirekesztésre kell alkalmazni, és a bináris szemaforokat a kölcsönös kirekesztés és az esemény bejelentésére használják. Bár nagyon hasonlóak a megvalósítás és az általános szemantika szempontjából, másokat használnak.

Összefoglaló:

1. A Mutexet általában egy közös erőforráshoz való hozzáférés sorozatosságára használják, míg a szemafor több egyidejű hozzáférés.

2. A Mutex olyan, mint egy szemafor, amelynek száma egy.

3. A Mutex csak egyetlen szálat enged meg hozzáférni, miközben a szemaforákat egyidejűleg bármilyen szál vagy folyamat jelezheti.

4. A szemiopórák ideálisak a szinkronizáláshoz, és gyakran használják az esemény bejelentésére és a kölcsönös kizárásra, miközben a mutexet csak a kölcsönös kirekesztéshez alkalmazzák.