Freigeben über


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.

Siehe auch