Classe ScheduleGroup

Representa uma abstração de um grupo agendado. Os grupos agendados organizam um conjunto de trabalhos relacionados que se beneficiam do agendamento conjunto, seja temporalmente (por meio da execução de outra tarefa no mesmo grupo antes de passar para o seguinte) ou espacialmente (por meio da execução de vários itens do mesmo grupo no mesmo nó NUMA ou soquete físico).

Sintaxe

class ScheduleGroup;

Membros

Construtores Protegidos

Nome Descrição
Destruidor de ~ScheduleGroup

Métodos públicos

Nome Descrição
Id Retorna um identificador do grupo agendado que é exclusivo no agendador ao qual o grupo pertence.
Referência Incrementa a contagem de referências do grupo agendado.
Versão Reduz a contagem de referências do grupo agendado.
ScheduleTask Agenda uma tarefa leve no grupo agendado.

Hierarquia de herança

ScheduleGroup

Requisitos

Cabeçalho: concrt.h

Namespace: concurrency

ID

Retorna um identificador do grupo agendado que é exclusivo no agendador ao qual o grupo pertence.

virtual unsigned int Id() const = 0;

Valor de retorno

Um identificador do grupo agendado que é exclusivo no agendador ao qual o grupo pertence.

operador delete

Um objeto ScheduleGroup é destruído internamente pelo runtime quando todas as referências externas a ele são liberadas. Ele não pode ser excluído explicitamente.

void operator delete(
    void* _PObject);

void operator delete(
    void* _PObject,
    int,
const char *,
    int);

Parâmetros

_PObject
Um ponteiro para o objeto a ser excluído.

Referência

Incrementa a contagem de referências do grupo agendado.

virtual unsigned int Reference() = 0;

Valor de retorno

A contagem de referências incrementada recentemente.

Comentários

Normalmente, isso é usado para gerenciar o tempo de vida do grupo agendado para composição. Quando a contagem de referências de um grupo agendado cai para zero, ele é excluído pelo runtime. Um grupo agendado criado usando o método CurrentScheduler::CreateScheduleGroup ou Scheduler::CreateScheduleGroup começa com uma contagem de referências de uma.

Versão

Reduz a contagem de referências do grupo agendado.

virtual unsigned int Release() = 0;

Valor de retorno

A contagem de referências reduzida recentemente.

Comentários

Normalmente, isso é usado para gerenciar o tempo de vida do grupo agendado para composição. Quando a contagem de referências de um grupo agendado cai para zero, ele é excluído pelo runtime. Depois de chamar o método Release o número específico de vezes para remover a contagem de referências de criação e quaisquer referências adicionais colocadas usando o método Reference, não será mais possível utilizar o grupo agendado. Isso resultará em um comportamento indefinido.

Um grupo agendado está associado a uma instância específica de agendador. Certifique-se de que todas as referências ao grupo agendado sejam liberadas antes de todas as referências ao agendador, pois as últimas podem resultar na destruição do agendador. Fazer o contrário resulta em um comportamento indefinido.

~ScheduleGroup

virtual ~ScheduleGroup();

ScheduleTask

Agenda uma tarefa leve no grupo agendado.

virtual void ScheduleTask(
    TaskProc _Proc,
    _Inout_opt_ void* _Data) = 0;

Parâmetros

_Proc
Um ponteiro para a função a ser empregada a fim de executar o corpo da tarefa leve.

_Data
Um ponteiro nulo para os dados que serão transmitidos como um parâmetro ao corpo da tarefa.

Comentários

Chamar o método ScheduleTask implicitamente coloca uma contagem de referências no grupo agendado que é removida pelo runtime em um momento apropriado após a execução da tarefa.

Confira também

Namespace de simultaneidade
Classe CurrentScheduler
Classe Scheduler
Agendador de Tarefas