Metodo ICLRSyncManager::CreateRWLockOwnerIterator
Richiede a Common Language Runtime di creare un iteratore che venga utilizzato dall'host per determinare l'insieme di attività in attesa su un blocco in lettura/scrittura.
HRESULT CreateRWLockOwnerIterator (
[in] SIZE_T cookie,
[out] SIZE_T *pIterator
);
Parametri
cookie
[in] Cookie associato al blocco in lettura/scrittura desiderato.pIterator
[out] Puntatore a un iteratore che può essere passato ai metodi GetRWLockOwnerNext e DeleteRWLockOwnerIterator.
Valore restituito
HRESULT |
Oggetto di descrizione |
---|---|
S_OK |
CreateRWLockOwnerIterator ha restituito correttamente un valore. |
HOST_E_CLRNOTAVAILABLE |
Common Language Runtime non è stato caricato in un processo oppure si trova in uno stato in cui non è possibile eseguire codice gestito né elaborare correttamente la chiamata. |
HOST_E_TIMEOUT |
Timeout della chiamata. |
HOST_E_NOT_OWNER |
Il chiamante non è il proprietario del blocco. |
HOST_E_ABANDONED |
Un evento è stato annullato mentre un thread o un fiber bloccato era in attesa di tale evento. |
E_FAIL |
Si è verificato un errore irreversibile sconosciuto. Se un metodo restituisce E_FAIL, CLR non sarà più utilizzabile all'interno del processo. Le successive chiamate ai metodi di hosting restituiranno HOST_E_CLRNOTAVAILABLE. |
HOST_E_INVALIDOPERATION |
CreateRWLockOwnerIterator è stato chiamato su un thread che sta eseguendo codice gestito. |
Note
Gli host in genere chiamano i metodi CreateRWLockOwnerIterator, DeleteRWLockOwnerIterator e GetRWLockOwnerNext durante il rilevamento dei deadlock. Poiché Common Language Runtime non tenta di mantenere attivo il blocco in lettura/scrittura, l'host deve garantire che tale blocco sia ancora valido. Per assicurare la validità del blocco, l'host dispone di diverse strategie:
L'host può bloccare le chiamate di rilascio sul blocco in lettura/scrittura, (ad esempio IHostSemaphore::ReleaseSemaphore), garantendo tuttavia che tale blocco non causi un deadlock.
L'host può bloccare l'interruzione dell'attesa dell'oggetto evento associato al blocco in lettura/scrittura, garantendo anche in questo caso che il blocco non causi un deadlock.
![]() |
---|
CreateRWLockOwnerIterator deve essere chiamato solo su thread che stanno eseguendo codice non gestito. |
Requisiti
Piattaforme: vedere Requisiti di sistema di .NET Framework.
Intestazione: MSCorEE.h
Libreria: inclusa come risorsa in MSCorEE.dll
Versioni di .NET Framework: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0