Partilhar via


Classe CurrentScheduler

Representa uma abstração para o agendador atual associado ao contexto de chamada.

Sintaxe

class CurrentScheduler;

Membros

Métodos Públicos

Nome Description
Create Cria um novo escalonador cujo comportamento é descrito pelo _Policy parâmetro e anexa-o ao contexto de chamada. O agendador recém-criado tornar-se-á o agendador atual para o contexto de chamada.
CreateScheduleGroup Sobrecarregado. Cria um novo grupo de agendamento dentro do agendador associado ao contexto de chamada. A versão que utiliza o parâmetro _Placement faz com que as tarefas dentro do grupo de agendamento recém-criado sejam enviesadas para serem executadas na localização especificada por esse parâmetro.
Desanexar Desanexa o agendador atual do contexto de chamada e restaura o agendador previamente ligado como o agendador atual, caso exista. Após este método regressar, o contexto de chamada é gerido pelo escalonador que estava previamente anexado ao contexto, utilizando o método CurrentScheduler::Create ou Scheduler::Attach.
Obter Devolve um ponteiro para o escalonador associado ao contexto da chamada, também referido como escalonador atual.
GetNumberOfVirtualProcessors Devolve o número atual de processadores virtuais para o agendador associado ao contexto de chamada.
GetPolicy Devolve uma cópia da política com que o agendador atual foi criado.
Id Devolve um identificador único para o agendador atual.
IsAvailableLocation Determina se uma determinada localização está disponível no agendador atual.
RegisterShutdownEvent Faz com que o handler de eventos do Windows passado no _ShutdownEvent parâmetro seja sinalizado quando o agendador associado ao contexto atual desliga e se destrói a si próprio. No momento em que o evento é sinalizado, todo o trabalho agendado para o agendador está concluído. Múltiplos eventos de encerramento podem ser registados através deste método.
TarefaAgendada Sobrecarregado. Agenda uma tarefa leve dentro do agendador associado ao contexto de chamada. A tarefa leve será colocada num grupo de agendamento determinado pelo tempo de execução. A versão que utiliza o parâmetro _Placement faz com que a tarefa seja enviesada para ser executada no local especificado.

Observações

Se não houver agendador (ver Scheduler) associado ao contexto de chamada, muitos métodos dentro da CurrentScheduler classe resultarão na anexação do agendador padrão do processo. Isto pode também implicar que o agendador padrão do processo é criado durante tal chamada.

Hierarquia de herança

CurrentScheduler

Requerimentos

Cabeçalho: concrt.h

Namespace: simultaneidade

Criar

Cria um novo escalonador cujo comportamento é descrito pelo parâmetro _Policy e associa-o ao contexto de chamada. O agendador recém-criado tornar-se-á o agendador atual para o contexto de chamada.

static void __cdecl Create(const SchedulerPolicy& _Policy);

Parâmetros

_Política
A política do agendador que descreve o comportamento do agendador recém-criado.

Observações

A ligação do agendador ao contexto de chamada coloca implicitamente uma contagem de referências no agendador.

Depois de criar um agendador com o método Create, deve chamar o método CurrentScheduler::Detach em algum momento futuro para permitir o encerramento do agendador.

Se este método for chamado a partir de um contexto que já está associado a outro agendador, o agendador existente é lembrado como o planeador anterior, e o planeador recém-criado torna-se o agendador atual. Quando chamas o CurrentScheduler::Detach método num ponto posterior, o agendador anterior é restaurado como o agendador atual.

Este método pode lançar várias exceções, incluindo scheduler_resource_allocation_error e invalid_scheduler_policy_value.

CriarGrupoDeAgenda

Cria um novo grupo de agendamento dentro do agendador associado ao contexto de chamada. A versão que utiliza o parâmetro _Placement faz com que as tarefas dentro do grupo de agendamento recém-criado sejam enviesadas para serem executadas na localização especificada por esse parâmetro.

static ScheduleGroup* __cdecl CreateScheduleGroup();

static ScheduleGroup* __cdecl CreateScheduleGroup(location& _Placement);

Parâmetros

_Posicionamento
Uma referência a um local onde as tarefas dentro do grupo de agendamento são priorizadas para execução.

Valor de retorno

Um apontador para o recém-criado grupo de agendamento. Este ScheduleGroup objeto tem uma contagem inicial de referências nele colocada.

Observações

Este método resultará na criação e/ou anexação do agendador padrão do processo ao contexto de chamada se não houver agendador atualmente associado ao contexto de chamada.

Deve invocar o método Release num grupo de agendamento quando terminar de agendar o trabalho para ele. O agendador destrói o grupo de horários quando todo o trabalho em fila para ele estiver concluído.

Observe que, se criou explicitamente este agendador, deve libertar todas as referências aos grupos de agendamento nesse contexto, antes de libertar a sua referência no agendador, removendo o contexto atual dele.

Desprender

Desanexa o agendador atual do contexto de chamada e restaura o agendador previamente ligado como o agendador atual, caso exista. Após este método regressar, o contexto de chamada é gerido pelo escalonador que estava previamente anexado ao contexto, utilizando o método CurrentScheduler::Create ou Scheduler::Attach.

static void __cdecl Detach();

Observações

O Detach método remove implicitamente uma contagem de referências do agendador.

Se não houver agendador associado ao contexto de chamada, chamar este método resultará numa exceção de scheduler_not_attached .

Invocar este método a partir de um contexto que seja interno e gerido por um agendador, ou um contexto que tenha sido anexado utilizando um método diferente dos Scheduler::Attach ou CurrentScheduler::Create, resultará na exceção improper_scheduler_detach ser lançada.

Obter

Devolve um ponteiro para o escalonador associado ao contexto da chamada, também referido como escalonador atual.

static Scheduler* __cdecl Get();

Valor de retorno

Um ponteiro para o agendador associado ao contexto de chamada (o agendador atual).

Observações

Este método resultará na criação e/ou anexação do agendador padrão do processo ao contexto de chamada se não houver agendador atualmente associado ao contexto de chamada. Não é feita referência adicional ao Scheduler objeto devolvido por este método.

GetNumberOfVirtualProcessors

Devolve o número atual de processadores virtuais para o agendador associado ao contexto de chamada.

static unsigned int __cdecl GetNumberOfVirtualProcessors();

Valor de retorno

Se um agendador estiver associado ao contexto de chamada, o número atual de processadores virtuais para esse agendador; caso contrário, o valor -1.

Observações

Este método não resultará em anexão do agendador se o contexto de chamada não estiver já associado a um agendador.

O valor de retorno deste método é uma amostragem instantânea do número de processadores virtuais no agendador associado ao contexto da chamada. Este valor pode ficar obsoleto no momento em que é devolvido.

GetPolicy

Devolve uma cópia da política com que o agendador atual foi criado.

static SchedulerPolicy __cdecl GetPolicy();

Valor de retorno

Uma cópia da política usada para criar o agendador atual.

Observações

Este método resultará na criação e/ou anexação do agendador padrão do processo ao contexto de chamada se não houver agendador atualmente associado ao contexto de chamada.

Id

Devolve um identificador único para o agendador atual.

static unsigned int __cdecl Id();

Valor de retorno

Se um agendador estiver associado ao contexto de chamada, um identificador único para esse agendador; caso contrário, o valor -1.

Observações

Este método não resultará em anexão do agendador se o contexto de chamada não estiver já associado a um agendador.

EstáDisponívelLocalização

Determina se uma determinada localização está disponível no agendador atual.

static bool __cdecl IsAvailableLocation(const location& _Placement);

Parâmetros

_Posicionamento
Uma referência à localização para consultar o agendador atual.

Valor de retorno

Uma indicação de se o local especificado pelo argumento _Placement está disponível no escalonador atual.

Observações

Este método não resultará em anexão do agendador se o contexto de chamada não estiver já associado a um agendador.

Note-se que o valor de retorno é uma amostragem instantânea de se a localização dada está disponível. Na presença de múltiplos agendadores, a gestão dinâmica de recursos pode adicionar ou retirar recursos aos agendadores em qualquer momento. Se isso acontecer, a localização indicada pode alterar a disponibilidade.

Registo Evento de Encerramento

Faz com que o handler de eventos do Windows passado no _ShutdownEvent parâmetro seja sinalizado quando o agendador associado ao contexto atual desliga e se destrói a si próprio. No momento em que o evento é sinalizado, todo o trabalho agendado para o agendador está concluído. Múltiplos eventos de encerramento podem ser registados através deste método.

static void __cdecl RegisterShutdownEvent(HANDLE _ShutdownEvent);

Parâmetros

_ShutdownEvent
Um handle para um objeto de evento Windows que será sinalizado pelo runtime quando o escalonador associado ao contexto atual se desliga e se destrói a si próprio.

Observações

Se não houver agendador associado ao contexto de chamada, chamar este método resultará numa exceção de scheduler_not_attached .

AgendaTarefa

Agenda uma tarefa leve dentro do agendador associado ao contexto de chamada. A tarefa leve será colocada num grupo de agendamento determinado pelo tempo de execução. A versão que utiliza o parâmetro _Placement faz com que a tarefa seja enviesada para ser executada no local especificado.

static void __cdecl ScheduleTask(
    TaskProc _Proc,
    _Inout_opt_ void* _Data);

static void __cdecl ScheduleTask(
    TaskProc _Proc,
    _Inout_opt_ void* _Data,
    location& _Placement);

Parâmetros

_Proc
Um apontador para a função a executar para realizar o corpo da tarefa leve.

_Data
Um ponteiro de tipo void para os dados que serão passados como parâmetro para o corpo da tarefa.

_Posicionamento
Uma referência a um local onde a tarefa leve estará inclinada a ser executada.

Observações

Este método resultará na criação e/ou anexação do agendador padrão do processo ao contexto de chamada se não houver agendador atualmente associado ao contexto de chamada.

Consulte também

concorrência Namespace
Classe Scheduler
PolicyElementKey
Agendador de Tarefas