ICLRSyncManager::CreateRWLockOwnerIterator-Methode
Diese Methode fordert an, dass die Common Language Runtime (CLR) einen Iterator für den Host erstellt, der verwendet werden soll, um die Tasks zu bestimmen, die auf eine Reader-Writer-Sperre warten.
Syntax
HRESULT CreateRWLockOwnerIterator (
[in] SIZE_T cookie,
[out] SIZE_T *pIterator
);
Parameter
cookie
[in] Das Cookie, das der gewünschten Reader-Writer-Sperre zugeordnet ist
pIterator
[out] Ein Zeiger auf einen Iterator, der an die Methoden GetRWLockOwnerNext und DeleteRWLockOwnerIterator übergeben werden kann
Rückgabewert
HRESULT | BESCHREIBUNG |
---|---|
S_OK | CreateRWLockOwnerIterator wurde erfolgreich zurückgegeben. |
HOST_E_CLRNOTAVAILABLE | Die CLR wurde nicht in einen Prozess geladen oder befindet sich in einem Zustand, in dem sie keinen verwalteten Code ausführen oder den Aufruf nicht erfolgreich verarbeiten kann. |
HOST_E_TIMEOUT | Timeout des Aufrufs. |
HOST_E_NOT_OWNER | Der Aufrufer besitzt die Sperre nicht. |
HOST_E_ABANDONED | Ein Ereignis wurde abgebrochen, während ein blockierter Thread oder eine blockierte Fiber darauf gewartet hat. |
E_FAIL | Es ist ein unbekannter katastrophaler Fehler aufgetreten. Wenn eine Methode E_FAIL zurückgibt, kann die CLR nicht mehr innerhalb des Prozesses verwendet werden. Nachfolgende Aufrufe von Hostingmethoden geben HOST_E_CLRNOTAVAILABLE zurück. |
HOST_E_INVALIDOPERATION | CreateRWLockOwnerIterator wurde für einen Thread aufgerufen, der derzeit verwalteten Code ausführt. |
Bemerkungen
Hosts rufen die Methoden CreateRWLockOwnerIterator
, DeleteRWLockOwnerIterator
und GetRWLockOwnerNext
in der Regel während der Deadlockerkennung auf. Der Host ist dafür verantwortlich, sicherzustellen, dass die Reader-Writer-Sperre weiterhin gültig ist, da die CLR nicht versucht, die Reader-Writer-Sperre aufrechtzuerhalten. Dem Host stehen mehrere Strategien zur Verfügung, um die Gültigkeit der Sperre sicherzustellen:
Der Host kann Releaseaufrufe für die Reader-Writer-Sperre (z. B. IHostSemaphore::ReleaseSemaphore) blockieren und gleichzeitig sicherstellen, dass dadurch kein Deadlock verursacht wird.
Der Host kann verhindern, dass der Exit auf das Ereignisobjekt wartet, das der Reader-Writer-Sperre zugeordnet ist, und stellt auch dabei sicher, dass diese Blockierung keinen Deadlock verursacht.
Hinweis
CreateRWLockOwnerIterator
darf nur für Threads aufgerufen werden, die derzeit nicht verwalteten Code ausführen.
Anforderungen
Plattformen: Informationen finden Sie unter Systemanforderungen.
Header: MSCorEE.h
Bibliothek: Als Ressource in „MsCorEE.dll“ enthalten.
.NET Framework-Versionen: Seit 2.0 verfügbar.