Methode ICLRSyncManager::CreateRWLockOwnerIterator
Vraagt dat de COMMON Language Runtime (CLR) een iterator maakt die de host moet gebruiken om de set taken te bepalen die wachten op een lezer-schrijververgrendeling.
Syntaxis
HRESULT CreateRWLockOwnerIterator (
[in] SIZE_T cookie,
[out] SIZE_T *pIterator
);
Parameters
cookie
[in] De cookie die is gekoppeld aan de gewenste lezer-schrijververgrendeling.
pIterator
[uit] Een aanwijzer naar een iterator die kan worden doorgegeven aan de methoden GetRWLockOwnerNext en DeleteRWLockOwnerIterator .
Retourwaarde
HRESULT | Beschrijving |
---|---|
S_OK | CreateRWLockOwnerIterator is geretourneerd. |
HOST_E_CLRNOTAVAILABLE | De CLR is niet geladen in een proces of de CLR heeft een status waarin beheerde code niet kan worden uitgevoerd of de aanroep kan worden verwerkt. |
HOST_E_TIMEOUT | Er is een time-out opgetreden voor het gesprek. |
HOST_E_NOT_OWNER | De beller is niet de eigenaar van het slot. |
HOST_E_ABANDONED | Een gebeurtenis is geannuleerd terwijl er een geblokkeerde thread of glasvezel op wachtte. |
E_FAIL | Er is een onbekende catastrofale fout opgetreden. Wanneer een methode E_FAIL retourneert, is de CLR niet meer bruikbaar binnen het proces. Volgende aanroepen naar hostingmethoden retourneren HOST_E_CLRNOTAVAILABLE. |
HOST_E_INVALIDOPERATION | CreateRWLockOwnerIterator is aangeroepen op een thread die momenteel beheerde code uitvoert. |
Opmerkingen
Hosts roepen doorgaans de CreateRWLockOwnerIterator
methoden , DeleteRWLockOwnerIterator
en GetRWLockOwnerNext
aan tijdens de detectie van impasses. De host is verantwoordelijk om ervoor te zorgen dat de lezer-schrijververgrendeling nog steeds geldig is, omdat de CLR geen poging doet om de lezer-schrijververgrendeling levend te houden. Er zijn verschillende strategieën beschikbaar voor de host om de geldigheid van de vergrendeling te garanderen:
De host kan releaseaanroepen blokkeren op de lezer-writer-vergrendeling (bijvoorbeeld IHostSemaphore::ReleaseSemaphore) en ervoor zorgen dat dit blok geen impasse veroorzaakt.
De host kan voorkomen dat de afsluiter wacht op het gebeurtenisobject dat is gekoppeld aan de lezer-writer-vergrendeling, om er nogmaals voor te zorgen dat dit blok geen impasse veroorzaakt.
Notitie
CreateRWLockOwnerIterator
moet alleen worden aangeroepen voor threads die momenteel niet-beheerde code uitvoeren.
Vereisten
Platforms: Zie Systeemvereisten.
Header: MSCorEE.h
Bibliotheek: Opgenomen als een resource in MSCorEE.dll
.NET Framework versies: beschikbaar sinds 2.0