Partilhar via


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 CreateRWLockOwnerIteratormétodos , DeleteRWLockOwnerIteratore 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

Ver também