ICLRSyncManager::CreateRWLockOwnerIterator, méthode
Mise à jour : novembre 2007
Demande que le Common Language Runtime (CLR) crée un itérateur pour que l'hôte puisse déterminer un ensemble de tâches attendant un verrou de lecteur-writer.
HRESULT CreateRWLockOwnerIterator (
[in] SIZE_T cookie,
[out] SIZE_T *pIterator
);
Paramètres
cookie
[in] Cookie associé au verrou de lecteur-writer voulu.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 a été retourné correctement. |
HOST_E_CLRNOTAVAILABLE |
Le CLR n'a pas été chargé dans un processus ou le CLR présente un état dans lequel il ne peut pas exécuter de code managé ou traiter l'appel avec succès. |
HOST_E_TIMEOUT |
L'appel a expiré. |
HOST_E_NOT_OWNER |
L'appelant ne possède pas le verrou. |
HOST_E_ABANDONED |
Un événement a été annulé alors qu'un thread bloqué ou une fibre l'attendait. |
E_FAIL |
Une défaillance grave et inconnue s'est produite. Lorsqu'une méthode retourne E_FAIL, le CLR n'est plus utilisable dans le 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 du code managé. |
Notes
Les hôtes appellent généralement les méthodes CreateRWLockOwnerIterator, DeleteRWLockOwnerIterator et GetRWLockOwnerNext pendant la détection de verrouillage. L'hôte est chargé de s'assurer que le verrou de lecteur-writer est toujours valide, car le CLR ne tente pas de le conserver actif. Plusieurs stratégies sont disponibles pour que l'hôte puisse garantir la validité du verrouillage :
L'hôte peut bloquer des appels de libération sur le verrou de lecteur-writer (par exemple, IHostSemaphore::ReleaseSemaphore), tout en s'assurant que ce blocage ne provoque pas de verrouillage.
L'hôte peut empêcher la sortie d'attendre l'objet événement associé au verrou de lecteur-writer, tout en s'assurant à nouveau que ce blocage ne provoque pas de verrouillage.
Remarque : |
---|
CreateRWLockOwnerIterator doit être appelé uniquement sur des threads qui exécutent du code non managé. |
Configuration requise
Plateformes : consultez Configuration requise du .NET Framework.
En-tête : MSCorEE.idl
Bibliothèque : incluse en tant que ressource dans MSCorEE.dll
Versions du .NET Framework : 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0