Método ICLRSyncManager::CreateRWLockOwnerIterator
Solicita que o common linguagem tempo de execução (CLR) criar um iterador para que o host usar para determinar o conjunto de tarefas esperando um bloquear de leitor-autor.
HRESULT CreateRWLockOwnerIterator (
[in] SIZE_T cookie,
[out] SIZE_T *pIterator
);
Parâmetros
cookie
[in] O cookie associado com o bloquear de leitor-autor desejado.pIterator
[out] Um ponteiro para um iterador que pode ser passado para o GetRWLockOwnerNext and DeleteRWLockOwnerIterator métodos.
Valor de retorno
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 em que ele não possa executar código gerenciado ou processar a telefonar com êxito. |
HOST_E_TIMEOUT |
A telefonar expirou. |
HOST_E_NOT_OWNER |
O chamador não é proprietário do bloquear. |
HOST_E_ABANDONED |
Um evento foi cancelado enquanto um segmento bloqueado ou fibra estava aguardando nele. |
E_FAIL |
Ocorreu uma falha catastrófica desconhecida. Quando um método retorna E_FAIL, o CLR não é mais útil dentro do processo. As chamadas subseqüentes à hospedagem métodos retornam HOST_E_CLRNOTAVAILABLE. |
HOST_E_INVALIDOPERATION |
CreateRWLockOwnerIterator foi chamado em um thread que está executando o código gerenciado. |
Comentários
Hosts normalmente chama a CreateRWLockOwnerIterator, DeleteRWLockOwnerIterator, e GetRWLockOwnerNext métodos durante a detecção de deadlock. O host é responsável por garantir que o bloquear de leitor-autor ainda é válido, porque o CLR não faz nenhuma tentativa para manter o bloquear de leitor-autor ativo. Várias estratégias estão disponível para o host garantir a validade do bloquear:
O host pode bloquear chamadas de liberação no bloqueio de leitor-gravador (por exemplo, IHostSemaphore::ReleaseSemaphore) garantindo que este bloco não causa deadlock.
O host pode bloquear a sair da aguardando o objeto de evento associado com o bloqueio de leitor-autor, novamente, garantindo que este bloco não causa deadlock.
Observação: |
---|
CreateRWLockOwnerIterator deve ser chamado apenas em segmentos que estão atualmente em execução código não gerenciado. |
Requisitos
Plataformas: See Requisitos de sistema do .NET framework.
Cabeçalho: MSCorEE.idl
Biblioteca: Incluído sistema autônomo um recurso em MSCorEE.dll
.NET Framework Versions: 3.5 SP1, 3,5, 3.0 SP1, 3.0, 2.0 SP1, 2.0