CSyncObject – třída
Čistě virtuální třída, která poskytuje funkce společné pro synchronizační objekty v systému Win32.
class CSyncObject : public CObject
Název | Popis |
---|---|
CSyncObject::CSyncObject | CSyncObject Vytvoří objekt. |
Název | Popis |
---|---|
CSyncObject::Lock | Získá přístup k objektu synchronizace. |
CSyncObject::Unlock | Získá přístup k objektu synchronizace. |
Název | Popis |
---|---|
CSyncObject::operator HANDLE | Poskytuje přístup k objektu synchronizace. |
Název | Popis |
---|---|
CSyncObject::m_hObject | Popisovač základního objektu synchronizace. |
Knihovna tříd Microsoft Foundation poskytuje několik tříd odvozených z CSyncObject
. Jedná se o CEvent, CMutex, CCriticalSection a CSemaphore.
Informace o tom, jak používat synchronizační objekty, naleznete v článku Multithreading: Jak používat synchronizační třídy.
CSyncObject
Hlavička: afxmt.h
Vytvoří synchronizační objekt se zadaným názvem.
explicit CSyncObject(LPCTSTR pstrName);
virtual ~CSyncObject();
pstrName
Název objektu. Pokud null, pstrName bude null.
Voláním této funkce získáte přístup k prostředku řízenému objektem synchronizace.
virtual BOOL Lock(DWORD dwTimeout = INFINITE);
dwTimeout
Určuje dobu v milisekundách, po kterou bude synchronizační objekt dostupný (signalován). Pokud je NEKONEČNO, bude čekat, Lock
až se objekt před návratem signalizují.
Nenulové, pokud byla funkce úspěšná; jinak 0.
Pokud je objekt synchronizace signalován, Lock
vrátí se úspěšně a vlákno nyní vlastní objekt. Pokud je synchronizační objekt nepřiřazený (nedostupný), bude čekat, Lock
až se objekt synchronizace signalizuje až do počtu milisekund zadaných v parametru dwTimeOut . Pokud synchronizační objekt nebyl signalován v zadaném čase, Lock
vrátí chybu.
Popisovač základního objektu synchronizace.
HANDLE m_hObject;
Tento operátor slouží k získání popisovače objektu CSyncObject
.
operator HANDLE() const;
V případě úspěchu popisovač objektu synchronizace; v opačném případě null.
Popisovač můžete použít k přímému volání rozhraní API systému Windows.
Deklarace Unlock
bez parametrů je čistě virtuální funkce a musí být přepsána všemi třídami odvozenými z CSyncObject
.
virtual BOOL Unlock() = 0; virtual BOOL Unlock(
LONG lCount,
LPLONG lpPrevCount = NULL);
LCount
Ve výchozím nastavení se nepoužívá implementace.
lpPrevCount
Ve výchozím nastavení se nepoužívá implementace.
Výchozí implementace vždy vrátí hodnotu TRUE.
Výchozí implementace deklarace se dvěma parametry vždy vrátí hodnotu TRUE. Tato funkce se volá k uvolnění přístupu k objektu synchronizace vlastněného volajícím vláknem. Druhá deklarace je poskytována pro synchronizační objekty, jako jsou semaphores, které umožňují více než jeden přístup řízeného prostředku.