Método ICLRSyncManager::CreateRWLockOwnerIterator
Pede que o runtime de linguagem comum (CLR) crie um iterador para o anfitrião utilizar para determinar o conjunto de tarefas à espera de um bloqueio leitor-escritor.
Sintaxe
HRESULT CreateRWLockOwnerIterator (
[in] SIZE_T cookie,
[out] SIZE_T *pIterator
);
Parâmetros
cookie
[in] O cookie associado ao bloqueio leitor-escritor pretendido.
pIterator
[fora] Um ponteiro para um iterador que pode ser transmitido para os métodos GetRWLockOwnerNext e DeleteRWLockOwnerIterator .
Devolver Valor
HRESULT | Description |
---|---|
S_OK | CreateRWLockOwnerIterator devolvido com êxito. |
HOST_E_CLRNOTAVAILABLE | O CLR não foi carregado para um processo ou o CLR está num estado em que não pode executar o código gerido ou processar a chamada com êxito. |
HOST_E_TIMEOUT | A chamada excedeu o limite de tempo. |
HOST_E_NOT_OWNER | O autor da chamada não é o proprietário do bloqueio. |
HOST_E_ABANDONED | Um evento foi cancelado enquanto um thread ou fibra bloqueado estava à espera. |
E_FAIL | Ocorreu uma falha catastrófica desconhecida. Quando um método devolve E_FAIL, o CLR já não é utilizável no processo. As chamadas subsequentes para métodos de alojamento devolvem HOST_E_CLRNOTAVAILABLE. |
HOST_E_INVALIDOPERATION | CreateRWLockOwnerIterator foi chamado num thread que está atualmente a executar código gerido. |
Observações
Normalmente, os anfitriões chamam os CreateRWLockOwnerIterator
métodos , DeleteRWLockOwnerIterator
e GetRWLockOwnerNext
durante a deteção do impasse. O anfitrião é responsável por garantir que o bloqueio leitor-escritor ainda é válido, porque o CLR não tenta manter o bloqueio leitor-escritor vivo. Estão disponíveis várias estratégias para o anfitrião garantir a validade do bloqueio:
O anfitrião pode bloquear chamadas de lançamento no bloqueio leitor-escritor (por exemplo, IHostSemaphore::ReleaseSemaphore) ao mesmo tempo que garante que este bloco não causa impasse.
O anfitrião pode impedir que a saída aguarde pelo objeto de evento associado ao bloqueio leitor-escritor, garantindo novamente que este bloco não causa impasse.
Nota
CreateRWLockOwnerIterator
tem de ser chamado apenas em threads que estejam atualmente a executar código não gerido.
Requisitos
Plataformas: Veja Requisitos de Sistema.
Cabeçalho: MSCorEE.h
Biblioteca: Incluído como um recurso no MSCorEE.dll
.NET Framework Versões: Disponível desde 2.0