Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Uma abstração para um thread de execução. Se quiser que o seu agendador receba threads escalonáveis em modo utilizador (UMS), configure o valor do elemento SchedulerKind da política do escalonador para UmsThreadDefault, e implemente a interface IUMSScheduler. Sistemas operativos de 64 bits apenas suportam threads UMS em versões do Windows 7 e superiores.
Sintaxe
struct IUMSThreadProxy : public IThreadProxy;
Membros
Métodos Públicos
| Nome | Description |
|---|---|
| IUMSThreadProxy::EnterCriticalRegion | Chamado para entrar numa região crítica. Quando dentro de uma região crítica, o escalonador não irá observar operações de bloqueio assíncronas que ocorrem durante a região. Isto significa que o escalonador não será reintroduzido para falhas de página, suspensões de threads, chamadas de procedimentos assíncronas do kernel (APCs), e assim por diante, para um thread UMS. |
| IUMSThreadProxy::EnterHyperCriticalRegion | Chamado para entrar numa região hipercrítica. Quando se está dentro de uma região hipercrítica, o agendador não perceberá quaisquer operações de bloqueio que ocorram durante a região. Isto significa que o escalonador não será reintroduzido para chamadas de funções bloqueantes, tentativas de aquisição de bloqueio bloqueantes, falhas de página, suspensões de threads, chamadas de procedimentos assíncronos do núcleo (APCs), entre outros, para uma thread UMS. |
| IUMSThreadProxy::ExitCriticalRegion | Chamado para sair de uma região crítica. |
| IUMSThreadProxy::ExitHyperCriticalRegion | Chamado para sair de uma região hipercrítica. |
| IUMSThreadProxy::GetCriticalRegionType | Devolve em que tipo de região crítica se encontra o proxy do thread. Como as regiões hipercríticas são um superconjunto de regiões críticas, se o código entrou numa região crítica e depois numa região hipercrítica, InsideHyperCriticalRegion será devolvido. |
Hierarquia de herança
IUMSThreadProxy
Requerimentos
Cabeçalho: concrtrm.h
Namespace: simultaneidade
IUMSThreadProxy::Método EnterCriticalRegion
Chamado para entrar numa região crítica. Quando dentro de uma região crítica, o agendador não irá observar operações de bloqueio que não estão sincronizadas que ocorrem durante essa região crítica. Isto significa que o escalonador não será reintroduzido para falhas de página, suspensões de threads, chamadas de procedimentos assíncronas do kernel (APCs), e assim por diante, para um thread UMS.
virtual int EnterCriticalRegion() = 0;
Valor de retorno
A nova profundidade da região crítica. As regiões críticas são reentrantes.
IUMSThreadProxy::EnterHyperCriticalRegion Método
Chamado para entrar numa região hipercrítica. Quando dentro de uma região hipercrítica, o agendador não irá observar quaisquer operações de bloqueio que ocorram durante a região. Isto significa que o escalonador não será reintroduzido para chamadas de funções de bloqueio, tentativas de aquisição de bloqueio que ficam pendentes, falhas de página, suspensões de threads, chamadas de procedimento assíncrono do kernel (APCs) e assim por diante, para uma thread UMS.
virtual int EnterHyperCriticalRegion() = 0;
Valor de retorno
A nova profundidade da região hipercrítica. As regiões hipercríticas são reentrantes.
Observações
O agendador deve ser extremamente cuidadoso com os métodos que chama e quais os bloqueios que adquire nessas áreas. Se o código nessa região bloquear num bloqueio que é mantido por algo que o agendador é responsável pelo agendamento, pode ocorrer um deadlock.
Método IUMSThreadProxy::ExitCriticalRegion
Chamado para sair de uma região crítica.
virtual int ExitCriticalRegion() = 0;
Valor de retorno
A nova profundidade da região crítica. As regiões críticas são reentrantes.
IUMSThreadProxy::ExitHyperCriticalRegion Method
Chamado para sair de uma região hipercrítica.
virtual int ExitHyperCriticalRegion() = 0;
Valor de retorno
A nova profundidade da região hipercrítica. As regiões hipercríticas são reentrantes.
IUMSThreadProxy::GetCriticalRegionType Método
Devolve em que tipo de região crítica se encontra o proxy do thread. Como as regiões hipercríticas são um superconjunto de regiões críticas, se o código entrou numa região crítica e depois numa região hipercrítica, InsideHyperCriticalRegion será devolvido.
virtual CriticalRegionType GetCriticalRegionType() const = 0;
Valor de retorno
O tipo de região crítica em que se encontra o proxy do thread.