Condividi tramite


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

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.

NotaNota

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

Vedere anche

Riferimenti

Interfaccia ICLRSyncManager

Interfaccia IHostSyncManager