Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os tópicos desta seção da documentação descrevem os recursos importantes do Agendador de Tarefas do Concurrency Runtime. 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 Tempo de Execução de Concorrência escalam automaticamente e melhoram seu desempenho em hardware que oferece capacidades ampliadas.
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ópicos Relacionados
| 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 de Agendamento | Descreve a função dos grupos de agendamento. Use grupos de programação quando você precisar de um alto grau de proximidade entre as tarefas, por exemplo, quando um grupo de tarefas relacionadas se beneficiarem de serem executadas 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 tempo de execução de simultaneidade. |
| Contextos | Descreve a função dos contextos, a função concurrency::wait e a classe concurrency::Context. Use essa funcionalidade quando precisar controlar o bloqueio, desbloqueio e suspensão dos contextos, ou para habilitar a sobresubscrição 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 concorrência | 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. |