Metodo ICLRSyncManager::CreateRWLockOwnerIterator
Richiede che Common Language Runtime (CLR) crei un iteratore per l'host da usare per determinare il set di attività in attesa in un blocco reader-writer.
Sintassi
HRESULT CreateRWLockOwnerIterator (
[in] SIZE_T cookie,
[out] SIZE_T *pIterator
);
Parametri
cookie
[in] Cookie associato al blocco reader-writer desiderato.
pIterator
[out] Puntatore a un iteratore che può essere passato ai metodi GetRWLockOwnerNext e DeleteRWLockOwnerIterator .
Valore restituito
HRESULT | Descrizione |
---|---|
S_OK | CreateRWLockOwnerIterator restituito correttamente. |
HOST_E_CLRNOTAVAILABLE | ClR non è stato caricato in un processo oppure CLR si trova in uno stato in cui non è possibile eseguire codice gestito o elaborare correttamente la chiamata. |
HOST_E_TIMEOUT | Timeout della chiamata. |
HOST_E_NOT_OWNER | Il chiamante non possiede il blocco. |
HOST_E_ABANDONED | Un evento è stato annullato mentre un thread bloccato o fibra era in attesa su di esso. |
E_FAIL | Si è verificato un errore irreversibile sconosciuto. Quando un metodo restituisce E_FAIL, CLR non è più utilizzabile all'interno del processo. Le chiamate successive ai metodi di hosting restituiscono HOST_E_CLRNOTAVAILABLE. |
HOST_E_INVALIDOPERATION | CreateRWLockOwnerIterator è stato chiamato su un thread attualmente in esecuzione codice gestito. |
Commenti
Gli host in genere chiamano i metodi , DeleteRWLockOwnerIterator
e GetRWLockOwnerNext
durante il CreateRWLockOwnerIterator
rilevamento del deadlock. L'host è responsabile di garantire che il blocco reader-writer sia ancora valido, perché CLR non tenta di mantenere attivo il blocco reader-writer. Sono disponibili diverse strategie per l'host per garantire la validità del blocco:
L'host può bloccare le chiamate di rilascio sul blocco reader-writer ,ad esempio IHostSemaphore::ReleaseSemaphore, assicurandosi che questo blocco non causa deadlock.
L'host può bloccare l'uscita dall'attesa sull'oggetto evento associato al blocco reader-writer, assicurando di nuovo che questo blocco non causa deadlock.
Nota
CreateRWLockOwnerIterator
deve essere chiamato solo nei thread che attualmente eseguono codice non gestito.
Requisiti
Piattaforme: vedere Requisiti di sistema di .NET Framework.
Intestazione: MSCorEE.h
Libreria: Incluso come risorsa in MSCorEE.dll
Versioni di .NET Framework: Disponibile da 2.0