Agendador de tarefas (Runtime de Simultaneidade)

Os tópicos nesta parte da documentação descrevem os recursos importantes do Agendador de Tarefas do Runtime de Simultaneidade. O Agendador de Tarefas é útil quando você deseja ajustar o desempenho do código existente que usa o Tempo de Execução de Simultaneidade.

Importante

O Agendador de Tarefas não está disponível em um aplicativo UWP (Plataforma Universal do Windows). Para obter mais informações, consulte Criar operações assíncronas no C++ para aplicativos UWP.

No Visual Studio 2015 e posterior, a classe concurrency::task e tipos relacionados em ppltasks.h usam o Windows ThreadPool como seu agendador. Este tópico não se aplica mais aos tipos definidos em ppltasks.h. Algoritmos paralelos, como parallel_for, continuam a usar o Runtime de Simultaneidade como o agendador padrão.

Dica

O Runtime de Simultaneidade fornece um agendador padrão e, portanto, você não precisa criar um em seu aplicativo. Como o Agendador de Tarefas ajuda você a ajustar o desempenho de seus aplicativos, é recomendável que você comece com a PPL (Biblioteca de Padrões Paralelos) ou a Biblioteca de Agentes Assíncronos se você for novo no Runtime de Simultaneidade.

O Agendador de Tarefas agenda e coordena as tarefas em tempo de execução. Uma tarefa é uma unidade de trabalho que executa um trabalho específico. Normalmente, uma tarefa pode ser executada em paralelo com outras tarefas. O trabalho executado por itens do grupo de tarefas, algoritmos paralelos e agentes assíncronos são todos exemplos de tarefas.

O Agendador de Tarefas gerencia os detalhes relacionados ao agendamento eficiente de tarefas em computadores que têm vários recursos de computação. O Agendador de Tarefas também usa os recursos mais recentes do sistema operacional subjacente. Portanto, os aplicativos que usam o Runtime de Simultaneidade dimensionam automaticamente e melhoram o hardware que expandiu os recursos.

A comparação com outros modelos de simultaneidade descreve as diferenças entre mecanismos de agendamento preemptivos e cooperativos. O Agendador de Tarefas usa o agendamento cooperativo e um algoritmo de roubo de trabalho junto com o agendador preemptivo do sistema operacional para obter o uso máximo de recursos de processamento.

O Runtime de Simultaneidade fornece um agendador padrão para que você não precise gerenciar detalhes da infraestrutura. Portanto, normalmente, você não usa o Agendador de Tarefas diretamente. No entanto, para atender às necessidades de qualidade do aplicativo, você pode usar o Agendador de Tarefas para fornecer sua própria política de agendamento ou associar agendadores a tarefas específicas. Por exemplo, suponha que você tenha uma rotina de classificação paralela que não seja dimensionada além de quatro processadores. Você pode usar políticas de agendador para criar um agendador que gere no máximo quatro tarefas simultâneas. Executar a rotina de classificação neste agendador permite que outros agendadores ativos usem os recursos de processamento restantes.

Título Descrição
Instâncias de agendador Descreve as instâncias de agendador e como usar as classes concurrency::Scheduler e concurrency::CurrentScheduler para gerenciá-las. Use as instâncias de agendador quando você quiser associar políticas de agendamento explícitas a tipos específicos de cargas de trabalho.
Políticas de agendador Descreve a função das políticas do agendador. Use políticas de agendador quando quiser controlar a estratégia que o agendador usa ao gerenciar tarefas.
Grupos Agendados Descreve a função dos grupos agendados. Use grupos agendados quando você exigir um alto grau de localidade entre as tarefas, por exemplo, quando um grupo de tarefas relacionadas se beneficiar da execução no mesmo nó do processador.
Tarefas leves Descreve a função das tarefas leves. Tarefas leves são úteis quando você adapta o código existente para usar a funcionalidade de agendamento do Runtime de Simultaneidade.
Contextos Descreve a função dos contextos, a função concurrency::wait e a classe concurrency::Context. Use essa funcionalidade quando precisar de controle sobre quando os contextos bloquearem, desbloquearem e suspenderem ou quando você quiser habilitar o excesso de assinatura em seu aplicativo.
Funções de gerenciamento da memória Descreve as funções concurrency::Alloc e concurrency::Free. Essas funções podem melhorar o desempenho da memória alocando e liberando memória de forma simultânea.
Comparando com outros modelos de simultaneidade Descreve as diferenças entre mecanismos de agendamento preemptivos e cooperativos.
Biblioteca de padrões paralelos (PPL) Descreve como usar vários padrões paralelos, por exemplo, algoritmos paralelos, em seus aplicativos.
Biblioteca de agentes assíncronos Descreve como usar agentes assíncronos em seus aplicativos.
Runtime de Simultaneidade Descreve o Runtime de Simultaneidade, que simplifica a programação paralela e contém links para tópicos relacionados.