Compartilhar via


Tarefas Leves

Este documento descreve a função de tarefas leves no Runtime de Simultaneidade. Uma tarefa leve é uma tarefa que você agenda diretamente de um objeto concurrency::Scheduler ou concurrency::ScheduleGroup. Uma tarefa leve é semelhante à função que você fornece à função CreateThread da API do Windows. Portanto, tarefas leves são úteis quando você adapta o código existente para usar a funcionalidade de agendamento do Runtime de Simultaneidade. O Próprio Runtime de Simultaneidade usa tarefas leves para agendar agentes assíncronos e enviar mensagens entre blocos de mensagens assíncronos.

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.

Tarefas leves têm menos sobrecarga do que agentes assíncronos e grupos de tarefas. Por exemplo, o runtime não informa quando uma tarefa leve é concluída. Além disso, o runtime não captura nem manipula exceções geradas de uma tarefa leve. Para obter mais informações sobre o tratamento de exceções e tarefas leves, confira Tratamento de exceções.

Para a maioria das tarefas, recomendamos que você use funcionalidades mais robustas, como grupos de tarefas e algoritmos paralelos, pois elas permitem que você divida mais facilmente tarefas complexas em tarefas mais básicas. Para obter mais informações sobre grupos de tarefas, confira Paralelismo de Tarefa. Para obter mais informações sobre algoritmos paralelos, consulte Algoritmos paralelos.

Para criar uma tarefa leve, chame o método concurrency::ScheduleGroup::ScheduleTask, concurrency::CurrentScheduler::ScheduleTask ou concurrency::Scheduler::ScheduleTask. Para aguardar a conclusão de uma tarefa leve, aguarde até que o agendador primário seja desligado ou use um mecanismo de sincronização, como um objeto concurrency::event .

Exemplo

Para obter um exemplo que demonstra como adaptar o código existente para usar uma tarefa leve, consulte Passo a passo: adaptando o código existente para usar tarefas leves.

Confira também

Agendador de Tarefas
Instruções passo a passo: adaptando um código existente para usar tarefas leves