Método ICLRSyncManager::CreateRWLockOwnerIterator
Solicita que o CLR (Common Language Runtime) crie um iterador para o host usar para determinar o conjunto de tarefas aguardando um bloqueio de leitor-gravador.
Sintaxe
HRESULT CreateRWLockOwnerIterator (
[in] SIZE_T cookie,
[out] SIZE_T *pIterator
);
Parâmetros
cookie
[in] O cookie associado ao bloqueio leitor-gravador desejado.
pIterator
[out] Um ponteiro para um iterador que pode ser passado para os métodos GetRWLockOwnerNext e DeleteRWLockOwnerIterator.
Valor Retornado
HRESULT | Descrição |
---|---|
S_OK | CreateRWLockOwnerIterator retornado com êxito. |
HOST_E_CLRNOTAVAILABLE | O CLR não foi carregado em um processo, ou o CLR está em um estado no qual não pode executar código gerenciado ou processar a chamada com êxito. |
HOST_E_TIMEOUT | Uma chamada atingiu o tempo limite. |
HOST_E_NOT_OWNER | O chamador não possui o bloqueio. |
HOST_E_ABANDONED | Um evento foi cancelado enquanto uma fibra ou um thread bloqueado estava esperando por ele. |
E_FAIL | Uma falha catastrófica desconhecida ocorreu. Quando um método retorna E_FAIL, o CLR não pode mais ser usado no processo. Chamadas subsequentes para métodos de hospedagem retornam HOST_E_CLRNOTAVAILABLE. |
HOST_E_INVALIDOPERATION | CreateRWLockOwnerIterator foi chamado em um thread que atualmente está executando o código gerenciado. |
Comentários
Os hosts normalmente chamam os métodos CreateRWLockOwnerIterator
, DeleteRWLockOwnerIterator
e GetRWLockOwnerNext
durante a detecção de deadlock. O host é responsável por garantir que o bloqueio leitor-gravador ainda seja válido, pois o CLR não tenta manter o bloqueio leitor-gravador vivo. Várias estratégias estão disponíveis para o host a fim de garantir a validade do bloqueio:
O host pode bloquear chamadas de versão no bloqueio leitor-gravador (por exemplo, IHostSemaphore::ReleaseSemaphore) enquanto garante que esse bloco não cause deadlock.
O host pode impedir que a saída aguarde o objeto de evento associado ao bloqueio leitor-gravador, garantindo novamente que esse bloco não cause deadlock.
Observação
CreateRWLockOwnerIterator
deve ser chamado somente em threads que estejam executando código não gerenciado no momento.
Requisitos
Plataformas: confira Requisitos do sistema.
Cabeçalho: MSCorEE.h
Biblioteca: incluída como um recurso no MSCorEE.dll
Versões do .NET Framework: disponíveis desde 2.0