Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os tópicos desta parte da documentação descrevem os recursos importantes do Agendador de Tarefas de Runtime de Concurrency. 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 da Plataforma Universal do Windows (UWP). Para obter mais informações, consulte Criando operações assíncronas em C++ para aplicativos UWP.
No Visual Studio 2015 e posterior, a classe concurrency::task e os tipos relacionados em ppltasks.h usam o Windows ThreadPool como agendador. Este tópico não se aplica mais aos tipos definidos em ppltasks.h. Algoritmos paralelos como parallel_for continuam a usar o Concurrency Runtime como o agendador padrão.
Sugestão
O Concurrency Runtime fornece um agendador padrão e, portanto, você não é obrigado a criar um em seu aplicativo. Como o Agendador de Tarefas ajuda a ajustar o desempenho de seus aplicativos, recomendamos que você comece com a Biblioteca de Padrões Paralelos (PPL) ou a Biblioteca de Agentes Assíncronos se você for novo no Tempo de Execução de Simultaneidade.
O Agendador de Tarefas agenda e coordena 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 de grupo de tarefas, algoritmos paralelos e agentes assíncronos são exemplos de tarefas.
O Agendador de Tarefas gerencia os detalhes relacionados ao agendamento eficiente de tarefas em computadores com vários recursos de computação. O Agendador de Tarefas também usa os recursos mais recentes do sistema operacional subjacente. Portanto, as aplicações que utilizam o Concurrency Runtime escalam automaticamente e melhoram em hardware que possui capacidades expandidas.
Comparação com Outros Modelos de Concorrência descreve as diferenças entre mecanismos de agendamento preemptivo e cooperativo. O Agendador de Tarefas usa agendamento cooperativo e um algoritmo de roubo de trabalho juntamente com o agendador preventivo do sistema operacional para obter o máximo uso de recursos de processamento.
O Concurrency Runtime fornece um agendador padrão para que você não precise gerenciar detalhes da infraestrutura. Portanto, você normalmente não usa o Agendador de Tarefas diretamente. No entanto, para atender às necessidades de qualidade do seu 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 não gere mais de quatro tarefas simultâneas. A execução da rotina de classificação neste agendador permite que outros agendadores ativos usem quaisquer recursos de processamento restantes.
Tópicos relacionados
| Título | Descrição |
|---|---|
| Instâncias do Agendador | Descreve instâncias do agendador e como usar as concurrency::Scheduler classes e concurrency::CurrentScheduler para gerenciá-las. Use instâncias do agendador quando quiser associar políticas de agendamento explícitas a tipos específicos de cargas de trabalho. |
| Políticas do Scheduler | Descreve a função das políticas do agendador. Use as políticas do agendador quando quiser controlar a estratégia que o agendador usa quando gerencia tarefas. |
| Agendar Grupos | Descreve a função dos grupos de agendamento. Use grupos de agendamento quando precisar de um alto grau de localidade entre tarefas, por exemplo, quando um grupo de tarefas relacionadas se beneficiar da execução no mesmo nó do processador. |
| Tarefas leves | Descreve o papel de tarefas leves. Tarefas leves são úteis quando você adapta o código existente para usar a funcionalidade de agendamento do Concurrency Runtime. |
| Contextos | Descreve a função dos contextos, a concurrency::wait função e a concurrency::Context classe. Use esta funcionalidade quando precisar de controlo sobre quando os contextos bloquear, desbloquear e ceder, ou quando quiser habilitar a sobresubscrição na sua aplicação. |
| funções de gerenciamento de 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 os outros modelos de concorrência | Descreve as diferenças entre mecanismos de agendamento preventivo e cooperativo. |
| 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 Concorrência | Descreve o Concurrency Runtime, que simplifica a programação paralela e contém links para tópicos relacionados. |