ICLRSyncManager::CreateRWLockOwnerIterator, méthode
Demande au Common Language Runtime (CLR) de créer un itérateur permettant à l’hôte de déterminer l’ensemble de tâches en attente sur un verrou de lecteur-rédacteur.
Syntaxe
HRESULT CreateRWLockOwnerIterator (
[in] SIZE_T cookie,
[out] SIZE_T *pIterator
);
Paramètres
cookie
[in] Cookie associé au verrou de lecteur-rédacteur souhaité.
pIterator
[out] Pointeur vers un itérateur qui peut être passé aux méthodes GetRWLockOwnerNext et DeleteRWLockOwnerIterator.
Valeur de retour
HRESULT | Description |
---|---|
S_OK | CreateRWLockOwnerIterator retourné. |
HOST_E_CLRNOTAVAILABLE | Le CLR n’a pas été chargé dans un processus ou son état ne lui permet pas d’exécuter du code managé ni de traiter l’appel correctement. |
HOST_E_TIMEOUT | L’appel a expiré. |
HOST_E_NOT_OWNER | L’appelant n’est pas propriétaire du verrou. |
HOST_E_ABANDONED | Un événement a été annulé alors qu’un thread ou une fibre bloqué l’attendait. |
E_FAIL | Une défaillance catastrophique inconnue s’est produite. Quand une méthode retourne E_FAIL, le CLR n’est plus utilisable au sein du processus. Les appels suivants aux méthodes d’hébergement retournent HOST_E_CLRNOTAVAILABLE. |
HOST_E_INVALIDOPERATION | CreateRWLockOwnerIterator a été appelé sur un thread qui exécute actuellement du code managé. |
Notes
Les hôtes appellent généralement les méthodes CreateRWLockOwnerIterator
, DeleteRWLockOwnerIterator
et GetRWLockOwnerNext
durant la détection d’interblocage. L’hôte est chargé de vérifier que le verrou de lecteur-rédacteur est toujours valide, car le CLR n’essaie pas de maintenir ce verrou actif. Plusieurs stratégies s’offrent à l’hôte pour vérifier la validité du verrou :
L’hôte peut bloquer les appels de libération sur le verrou de lecteur-rédacteur (par exemple, IHostSemaphore::ReleaseSemaphore) tout en vérifiant que ce bloc ne provoque pas d’interblocage.
L’hôte peut empêcher la sortie d’attendre l’objet événement associé au verrou de lecteur-rédacteur, là encore en vérifiant que ce bloc ne provoque pas d’interblocage.
Notes
CreateRWLockOwnerIterator
doit être appelé uniquement sur les threads qui exécutent actuellement du code non managé.
Spécifications
Plateformes : Consultez Configuration requise.
En-tête : MSCorEE.h
Bibliothèque : incluse en tant que ressource dans MsCorEE.dll
Versions de .NET Framework : Disponible depuis la version 2.0