ICLRSyncManager::CreateRWLockOwnerIterator (Método)
Solicita que Common Language Runtime (CLR) cree un iterador que permita al host determinar el conjunto de tareas que esperan en un bloqueo de lectura y escritura.
HRESULT CreateRWLockOwnerIterator (
[in] SIZE_T cookie,
[out] SIZE_T *pIterator
);
Parámetros
cookie
[in] Cookie asociada al bloqueo de lector y escritor.pIterator
[out] Puntero a un iterador que se puede pasar a los métodos GetRWLockOwnerNext y DeleteRWLockOwnerIterator.
Valor devuelto
HRESULT |
Descripción |
---|---|
S_OK |
CreateRWLockOwnerIterator finalizó correctamente. |
HOST_E_CLRNOTAVAILABLE |
CLR no se ha cargado en un proceso o está en un estado en el que no puede ejecutar el código administrado o procesar la llamada correctamente. |
HOST_E_TIMEOUT |
Se agotó el tiempo de espera de la llamada. |
HOST_E_NOT_OWNER |
El llamador no posee el bloqueo. |
HOST_E_ABANDONED |
Se canceló un evento mientras una fibra o un subproceso bloqueado estaba esperándole. |
E_FAIL |
Se ha producido un error catastrófico desconocido. Si un método devuelve E_FAIL, CLR no se puede seguir utilizando en el proceso. Las llamadas subsiguientes a métodos de hospedaje devuelven HOST_E_CLRNOTAVAILABLE. |
HOST_E_INVALIDOPERATION |
CreateRWLockOwnerIterator se ha llamado en un subproceso que está ejecutando actualmente código administrado. |
Comentarios
Normalmente, los hosts llaman a los métodos CreateRWLockOwnerIterator, DeleteRWLockOwnerIterator y GetRWLockOwnerNext durante la detección de interbloqueos. El host es responsable de garantizar que el bloqueo de lectura y escritura siga siendo válido, ya que CLR no intenta mantener activo dicho bloqueo. Existen varias estrategias para que el host garantice la validez del bloqueo:
El host puede bloquear las llamadas de liberación en el bloqueo de lectura y escritura (por ejemplo, IHostSemaphore::ReleaseSemaphore) asegurándose de que este bloqueo no produzca ningún interbloqueo.
El host puede bloquear la salida de la espera al objeto de evento asociado al bloqueo de lector y escritor, garantizando de nuevo que este bloqueo no produzca ningún interbloqueo.
Nota |
---|
CreateRWLockOwnerIterator sólo se debe llamar en los subprocesos que están ejecutando actualmente código no administrado. |
Requisitos
Plataformas: vea Requisitos de sistema de .NET Framework.
Encabezado: MSCorEE.h
Biblioteca: Se incluye como recurso en MsCorEE.dll
Versiones de .NET Framework: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0