Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megjegyzés:
A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.
A "mutex" egy szinkronizálási objektumot jelöl, amely lehetővé teszi, hogy egy szál kölcsönösen kizárja az erőforráshoz való hozzáférést.
Szemantika
class CMutex : public CSyncObject
Tagok
Nyilvános konstruktorok
| Név | Description |
|---|---|
| CMutex::CMutex | Egy CMutex objektumot hoz létre. |
Megjegyzések
A mutexek akkor hasznosak, ha egyszerre csak egy szál módosíthatja az adatokat vagy más vezérelt erőforrásokat. Csomópontok hozzáadása például egy csatolt listához olyan folyamat, amelyet egyszerre csak egy szálnak kell engedélyeznie. Ha objektumot CMutex használ a csatolt lista vezérlésére, egyszerre csak egy szál férhet hozzá a listához.
Objektum használatához CMutex szükség esetén hozza létre az CMutex objektumot. Adja meg annak a mutexnek a nevét, amelynél várni szeretne, és hogy az alkalmazásnak kezdetben a tulajdonosa legyen. Ezután a konstruktor visszatérésekor elérheti a mutexet. Hívja meg a CSyncObject::Unlock parancsot , amikor végzett az ellenőrzött erőforrás elérésén.
Egy másik módszer az objektumok használatára CMutex , ha adattagként egy típusváltozót CMutex ad hozzá a szabályozni kívánt osztályhoz. Az ellenőrzött objektum létrehozása során hívja meg az adattag konstruktorát CMutex , amely megadja, hogy a mutex eredetileg a tulajdonosa-e, a mutex nevét (ha a folyamathatárokon keresztül fogja használni), valamint a kívánt biztonsági attribútumokat.
Az objektumok által CMutex szabályozott erőforrások ilyen módon való eléréséhez először hozzon létre egy CSingleLock típusú vagy CMultiLock típusú változót az erőforrás hozzáférési tagfüggvényében. Ezután hívja meg a zárolási objektum tagfüggvényét Lock (például CSingleLock::Lock). Ezen a ponton a szál vagy hozzáférést kap az erőforráshoz, megvárja az erőforrás kiadását és a hozzáférést, vagy megvárja az erőforrás kiadását és időtúllépését, és nem fér hozzá az erőforráshoz. Mindenesetre az erőforrás szálbiztos módon lett elérve. Az erőforrás kiadásához használja a zárolási objektum tagfüggvényét Unlock (például CSingleLock::Unlock), vagy engedélyezze, hogy a zárolási objektum kiesjen a hatókörből.
Az objektumok használatáról CMutex további információt a Többszálúság: A szinkronizálási osztályok használata című cikkben talál.
Öröklési hierarchia
CMutex
Requirements
Fejléc: afxmt.h
CMutex::CMutex
Névvel ellátott vagy névtelen CMutex objektumot hoz létre.
CMutex(
BOOL bInitiallyOwn = FALSE,
LPCTSTR lpszName = NULL,
LPSECURITY_ATTRIBUTES lpsaAttribute = NULL);
Paraméterek
bInitiallyOwn
Megadja, hogy az CMutex objektumot létrehozó szál kezdetben hozzáfér-e a mutex által vezérelt erőforráshoz.
lpszName
Az CMutex objektum neve. Ha létezik egy másik azonos nevű mutex, akkor az lpszName értéket kell megadni, ha az objektumot a folyamathatárokon keresztül fogja használni.
Null érték esetén a mutex neve nem lesz megadva. Ha a név egyezik egy meglévő mutexszel, a konstruktor létrehoz egy új CMutex objektumot, amely az adott név mutexére hivatkozik. Ha a név megegyezik egy meglévő szinkronizálási objektummal, amely nem mutex, a konstrukció sikertelen lesz.
lpsaAttribute
A mutex objektum biztonsági attribútumai. A struktúra teljes leírását a Windows SDK SECURITY_ATTRIBUTES című témakörben talál.
Megjegyzések
Egy objektum eléréséhez vagy felszabadításához CMutex hozzon létre egy CMultiLock - vagy CSingleLock-objektumot , és hívja meg a zárolási és zárolási tagfüggvényeket. Ha az CMutex objektumot önállóan használja, hívja meg annak tagfüggvényét Unlock a kiadásához.
Fontos
Az CMutex objektum létrehozása után a GetLastError használatával győződjön meg arról, hogy a mutex még nem létezik. Ha a mutex váratlanul létezett, az azt jelezheti, hogy egy rogue folyamat guggolódik, és rosszindulatúan kívánja használni a mutexet. Ebben az esetben az ajánlott biztonságtudatos eljárás a fogópont bezárása és folytatása, mintha hiba történt volna az objektum létrehozásakor.