ICLRSyncManager::CreateRWLockOwnerIterator (Método)
Solicita que Common Language Runtime (CLR) cree un iterador para que el host lo use a fin de determinar el conjunto de tareas que esperan en un bloqueo de lector-escritor.
Sintaxis
HRESULT CreateRWLockOwnerIterator (
[in] SIZE_T cookie,
[out] SIZE_T *pIterator
);
Parámetros
cookie
[in] Cookie asociada al bloqueo de lector-escritor deseado.
pIterator
[out] Un puntero a un iterador que se puede pasar a los métodos GetRWLockOwnerNext y DeleteRWLockOwnerIterator.
Valor devuelto
HRESULT | Descripción |
---|---|
S_OK | CreateRWLockOwnerIterator se devolvió correctamente. |
HOST_E_CLRNOTAVAILABLE | Si se devuelve este valor, significa que Common Language Runtime (CLR) no se ha cargado en un proceso o se encuentra en un estado en el que no puede ejecutar código administrado ni procesar la llamada correctamente. |
HOST_E_TIMEOUT | Se agotó el tiempo de espera de la llamada. |
HOST_E_NOT_OWNER | El autor de la llamada no es el propietario del bloqueo. |
HOST_E_ABANDONED | Se canceló un evento mientras que una fibra o subproceso que estaba bloqueado lo estaba esperando. |
E_FAIL | Ocurrió un error grave desconocido. Si un método devuelve el valor E_FAIL, el CLR ya no se podrá usar en el proceso. Las llamadas que se hagan a los métodos de hospedaje posteriormente devolverán el valor HOST_E_CLRNOTAVAILABLE. |
HOST_E_INVALIDOPERATION | CreateRWLockOwnerIterator se llamó a en un subproceso que ejecuta código administrado actualmente. |
Comentarios
Los hosts suelen llamar a los métodos, CreateRWLockOwnerIterator
, DeleteRWLockOwnerIterator
y GetRWLockOwnerNext
durante la detección de interbloqueos. El host es responsable de asegurarse de que el bloqueo lector-escritor sigue siendo válido, ya que CLR no intenta mantener el bloqueo lector-escritor activo. Hay varias estrategias disponibles para el host para garantizar la validez del bloqueo:
El host puede bloquear las llamadas de versión en el bloqueo lector-escritor (por ejemplo, IHostSemaphore::ReleaseSemaphore) al mismo tiempo que garantiza que este bloque no cause interbloqueo.
El host puede impedir que la salida espere en el objeto de evento asociado al bloqueo lector-escritor, de nuevo asegurándose de que este bloque no cause interbloqueo.
Nota
CreateRWLockOwnerIterator
solo se debe llamar a en subprocesos que ejecutan código no administrado actualmente.
Requisitos
Plataformas: Vea Requisitos de sistema.
Encabezado: MSCorEE.h
Biblioteca: incluida como recurso en MSCorEE.dll
Versiones de .NET Framework: disponible a partir de la versión 2.0