Método de ICLRSyncManager::CreateRWLockOwnerIterator
Solicita que o common language runtime (CLR) criar um iterador do host usar para determinar o conjunto de tarefas esperando um bloqueio de leitor-gravador.
HRESULT CreateRWLockOwnerIterator (
[in] SIZE_T cookie,
[out] SIZE_T *pIterator
);
Parâmetros
cookie
[in] O cookie é associado com o bloqueio de leitor-gravador desejado.pIterator
[out] Um ponteiro para um iterador que pode ser passado para o GetRWLockOwnerNext e DeleteRWLockOwnerIterator métodos.
Valor de retorno
HRESULT |
Descrição |
---|---|
S_OK |
CreateRWLockOwnerIteratorretornado com êxito. |
HOST_E_CLRNOTAVAILABLE |
O CLR não foi carregado em um processo ou o CLR é em um estado em que ele não é possível executar código gerenciado ou processar a chamada com êxito. |
HOST_E_TIMEOUT |
A chamada foi esgotado. |
HOST_E_NOT_OWNER |
O chamador não possui o bloqueio. |
HOST_E_ABANDONED |
Um evento foi cancelado, enquanto um segmento bloqueado ou fibra estava esperando por ele. |
E_FAIL |
Ocorreu uma falha catastrófica desconhecida. Quando um método retorna E_FAIL, o CLR não é usável dentro do processo. As chamadas subseqüentes para hospedar os métodos retornam HOST_E_CLRNOTAVAILABLE. |
HOST_E_INVALIDOPERATION |
CreateRWLockOwnerIteratorfoi chamado em um thread que está sendo executado o código gerenciado. |
Comentários
Hosts normalmente chama o CreateRWLockOwnerIterator, DeleteRWLockOwnerIterator, e GetRWLockOwnerNext métodos durante a detecção de deadlock. O host é responsável por garantir que o bloqueio de leitor-gravador ainda é válido, porque o CLR não faz nenhuma tentativa de manter o bloqueio de leitor-gravador alive. Várias estratégias estão disponíveis para o host garantir a validade do bloqueio:
O host pode bloquear chamadas de liberação no bloqueio de leitor-gravador (por exemplo, IHostSemaphore::ReleaseSemaphore), garantindo que este bloco não causar o bloqueio.
O host pode bloquear a saída de esperar o objeto de evento associado com o bloqueio de leitor-gravador, novamente, garantindo que este bloco não causar o bloqueio.
Observação
CreateRWLockOwnerIteratordeve ser chamado apenas em segmentos que estão em execução de código não gerenciado.
Requisitos
Plataformas: Consulte Requisitos de sistema do .NET Framework.
Cabeçalho: MSCorEE.h
Biblioteca: Incluído como um recurso em mscoree
.NET Framework versões: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0