Mutex szemafor kritikus szakaszok

Szinkronizációs objektum: mutexek, szemafor, kritikus szakasz

Kritikus szakaszok szinkronizálás mint mutexes (kb mutexes cm. Lent), kivéve, hogy a tárgyak a kritikus szakaszok rendelkezésre áll egy folyamat. Események, mutexes és szemaforokat is fel lehet használni a „single-folyamat” alkalmazás, de a kritikus szakaszok egy gyorsabb és hatékonyabb mechanizmus kölcsönös kizárás szinkronizálást. Hasonlóan mutexek objektum, amely a kritikus szakaszban lehet használni csak egy szál egy időben, így rendkívül hasznos megkülönböztetésére hozzáférést a megosztott erőforrásokat. Nehéz feltételezni semmit, hogy milyen sorrendben patakok kapnak hozzáférést a forrás, csak akkor tudjuk mondani, hogy a rendszer nem lenne „fair” minden folyamatra.

Mutex (kölcsönös kizárás, kölcsönös kizárás) - egy szinkronizációs objektum van telepítve egy speciális riasztást, ha nem vesznek részt semmilyen adatfolyam. Csak egy szál tartja a tárgy bármikor, innen a név az ilyen tárgyak - egyidejű hozzáférést a megosztott erőforrás kizárt. Például, hogy kizárja a felvétel két folyam egy közös memória helyen egy időben, minden szál megvárja a mutex ingyenes, ez lesz a tulajdonos, majd ír valamit ebben a darabban a memória. Miután minden szükséges intézkedést mutexeket oldani, más szálak férhet hozzá a megosztott erőforrás.

Két (vagy több) folyamat hozza létre a mutex az azonos nevű hívja CreateMutex módszerrel. Az első folyamat létrehoz egy mutex, és a következő eljárásokat a fogantyú egy meglévő objektumot. Ez lehetővé teszi, hogy több folyamat, hogy a fogantyú az azonos mutex, felszabadítva a programozó, hogy aggódnia, akik ténylegesen létrehozza a mutexet. Ha ezt a megközelítést, kívánatos létrehozni bInitialOwner zászló FALSE, különben nem lesz valami nehéz meghatározni a tényleges alkotója a mutex.

Különböző eljárások tudja szerezni a fogantyút az azonos mutex amely lehetővé teszi a kommunikációt a folyamatokat. Használhatja a következő mechanizmusokat e megközelítés:

A gyermek folyamat teremtett a CreateProcess funkció öröklik a kilincset mutexek ha ha (mutexek) létrehozása Funk CreateMutex paraméter volt megadva lpMutexAttributes.

Az eljárás két példányban kap a meglévő mutexek keresztül DuplicateHandle funkciót.

Az eljárás neve lehet egy meglévő mutex amikor hívja, vagy OpenMutex CreateMutex funkciókat.

Általánosságban elmondható, hogy ha szinkronizálni folyamok egy folyamat, egy jobb megközelítés az, hogy a kritikus szakaszokat.

Kapcsolódó cikkek