Sdílet prostřednictvím


ICLRSyncManager::CreateRWLockOwnerIterator – metoda

Vyžaduje, aby modul CLR (Common Language Runtime) vytvořil pro hostitele iterátor, který použije k určení sady úloh čekajících na zámek čtenář-zapisovač.

Syntaxe

HRESULT CreateRWLockOwnerIterator (  
    [in]  SIZE_T    cookie,  
    [out] SIZE_T   *pIterator  
);  

Parametry

cookie
[v] Soubor cookie přidružený k požadovanému zámku čtečka-zapisovač.

pIterator
[out] Ukazatel na iterátor, který lze předat GetRWLockOwnerNext a DeleteRWLockOwnerIterator metody.

Návratová hodnota

HRESULT Description
S_OK CreateRWLockOwnerIterator úspěšně vráceno.
HOST_E_CLRNOTAVAILABLE ClR nebyl načten do procesu nebo clr je ve stavu, ve kterém nemůže spustit spravovaný kód nebo úspěšně zpracovat volání.
HOST_E_TIMEOUT Časový limit hovoru vypršel.
HOST_E_NOT_OWNER Volající zámek nevlastní.
HOST_E_ABANDONED Událost byla zrušena, zatímco na ni čekalo blokované vlákno nebo vlákno.
E_FAIL Došlo k neznámému závažnému selhání. Když metoda vrátí E_FAIL, clr již není možné v rámci procesu použít. Následná volání metod hostování vrátí HOST_E_CLRNOTAVAILABLE.
HOST_E_INVALIDOPERATION CreateRWLockOwnerIterator byla volána ve vlákně, ve kterém je aktuálně spuštěn spravovaný kód.

Poznámky

Hostitelé obvykle volají CreateRWLockOwnerIteratormetody , DeleteRWLockOwnerIteratora GetRWLockOwnerNext během detekce vzájemného zablokování. Hostitel zodpovídá za to, že zámek čtenář-zapisovač je stále platný, protože modul CLR se nepokouší zámek čtenář-zapisovač zachovat. Pro hostitele je k dispozici několik strategií, jak zajistit platnost zámku:

  • Hostitel může blokovat volání vydané verze na zámku čtenář-zapisovat (například IHostSemaphore::ReleaseSemaphore) a zároveň zajistit, aby tento blok nezpůsoboval vzájemné zablokování.

  • Hostitel může blokovat ukončení čekání na objekt události přidružený k zámku čtenář-zapisovač a znovu zajistit, že tento blok nezpůsobí vzájemné zablokování.

Poznámka

CreateRWLockOwnerIterator musí být volána pouze ve vláknech, která aktuálně spouští nespravovaný kód.

Požadavky

Platformy: Viz Požadavky na systém.

Záhlaví: MSCorEE.h

Knihovny: Zahrnutý jako prostředek v MSCorEE.dll

Verze rozhraní .NET Framework: K dispozici od verze 2.0

Viz také