Partilhar via


Tarefas leves

Este documento descreve a função de tarefas leves no Concurrency Runtime. Uma tarefa leve é uma tarefa que você agenda diretamente de um concurrency::Scheduler ou concurrency::ScheduleGroup objeto. Uma tarefa leve se assemelha à função que você fornece para a 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 Concurrency Runtime. O próprio Concurrency Runtime usa tarefas leves para agendar agentes assíncronos e enviar mensagens entre blocos de mensagens assíncronas.

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.

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

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

Para criar uma tarefa leve, chame o concurrency::ScheduleGroup::ScheduleTask, concurrency::CurrentScheduler::ScheduleTask ou concurrency::Scheduler::ScheduleTask. Para aguardar a conclusão de uma tarefa leve, aguarde até que o agendador pai desligue 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.

Ver também

Agendador de Tarefas
Passo a passo: Adaptando o código existente para usar tarefas leves