Partager via


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

Voir aussi