Compartilhar via


Classe ScheduleGroup

Representa uma abstração de um grupo de agendamento. 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 de agendamento.
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: simultaneidade

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 de agendamento.

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 de agendamento criado usando o método CurrentScheduler::CreateScheduleGroup ou Scheduler::CreateScheduleGroup inicia com uma contagem de referência igual a um.

Lançamento

Reduz a contagem de referências do grupo agendado.

virtual unsigned int Release() = 0;

Valor de retorno

A contagem de referências decrementada 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 um 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, você não pode mais utilizar o grupo de agendamento. Isso resultará em um comportamento indefinido.

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

~ScheduleGroup

virtual ~ScheduleGroup();

Agendar Tarefa

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 usada para executar o corpo da tarefa de baixa carga.

_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 de agendamento, que é removida pelo runtime em um momento apropriado após a execução da tarefa.

Confira também

Namespace de concorrência
Classe CurrentScheduler
Classe Scheduler
Agendador de Tarefas