Compartilhar via


Grupos de agendamento

Este documento descreve a função de grupos de agendamento no Runtime de simultaneidade. A o grupo de agendamento affinitizes ou agrupa, tarefas relacionadas. Cada programador tem um ou mais grupos de agendamento. Use grupos de agendamento quando exigem um alto grau de localidade entre tarefas, por exemplo, quando um grupo de tarefas relacionadas beneficiam em execução no mesmo nó do processador. Por outro lado, use instâncias do Agendador quando seu aplicativo tem requisitos específicos de qualidade, por exemplo, quando você deseja limitar a quantidade de recursos de processamento que estão alocados para um conjunto de tarefas. Para obter mais informações sobre as instâncias do Agendador, consulte Instâncias do Agendador.

Dica

O Runtime de simultaneidade fornece um programador de padrão e, portanto, não é necessário criá-lo em seu aplicativo. Como o Agendador de tarefas Ajuda a ajustar o desempenho de seus aplicativos, recomendamos que você inicie com o Biblioteca paralela de padrões (PPL) ou Biblioteca de agentes assíncronos se você for novo no Runtime de simultaneidade.

Cada Scheduler objeto tem um grupo de agendamento padrão para cada nó de agendamento. A agendamento nó mapeia para a topologia do sistema subjacente. O runtime cria um nó de agendamento para cada pacote do processador ou arquitetura de memória não-uniforme (NUMA), seja qual for o número é maior. Se você explicitamente não associar uma tarefa com um grupo de agendamento, o Agendador escolhe qual grupo para adicionar a tarefa.

O SchedulingProtocol a política de Agendador influencia a ordem na qual o Agendador executa as tarefas de cada grupo de agendamento. Quando SchedulingProtocol for definido como EnhanceScheduleGroupLocality (que é o padrão), o Agendador de tarefas escolhe a próxima tarefa a partir do grupo de agendamento que ele está trabalhando em quando a conclusão da tarefa ou cooperativa produz. O Agendador de tarefas Pesquisa o grupo de agendamento atual para o trabalho antes de ele move para o próximo grupo disponível. Inversamente, quando SchedulingProtocol for definido como EnhanceForwardProgress, o Agendador move para o próximo grupo de agendamento após a conclusão de cada tarefa ou produz. Para obter um exemplo que compara a essas diretivas, consulte Como: Use grupos de agendamento para influenciar a ordem de execução.

O runtime usa a Concurrency::ScheduleGroup classe para representar grupos de agendamento. Para criar um ScheduleGroup de objeto, chamar o Concurrency::CurrentScheduler::CreateScheduleGroup ou Concurrency::Scheduler::CreateScheduleGroup método. O tempo de execução usa o mecanismo de contagem de referência para controlar a vida útil do ScheduleGroup objetos, assim como ele faz com Scheduler objetos. Quando você cria um ScheduleGroup o objeto, o runtime define a referência de um contador. O Concurrency::ScheduleGroup::Reference método incrementa o contador de referência por um. O Concurrency::ScheduleGroup::Release diminui de método o contador de referência por um.

Muitos tipos em Runtime de simultaneidade permitem que você associar um objeto junto com um grupo de agendamento. Por exemplo, o Concurrency::agent classes de classe e a mensagem de bloco como Concurrency::unbounded_buffer, Concurrency::join, e Concurrency::timer, fornecem versões sobrecarregadas do construtor, tirar uma ScheduleGroup objeto. O runtime usa o Scheduler objeto que está associado esta ScheduleGroup o objeto para agendar a tarefa.

Você também pode usar o Concurrency::ScheduleGroup::ScheduleTask método para agendar uma tarefa simples. Para obter mais informações sobre tarefas leves, consulte Tarefas leves.

Exemplo

Para obter um exemplo que usa os grupos para controlar a ordem de execução de tarefas de agendamento, consulte Como: Use grupos de agendamento para influenciar a ordem de execução.

Consulte também

Conceitos

Agendador de tarefas (Runtime de simultaneidade)

Outros recursos

Instâncias do Agendador

Como: Use grupos de agendamento para influenciar a ordem de execução

Histórico de alterações

Date

History

Motivo

Julho de 2010

Conteúdo reorganizado.

Aprimoramento de informações.