Método de task_group::Run

Agenda uma tarefa sobre o task_group objeto. Se um task_handle objeto é passado como um parâmetro para run, o chamador é responsável por gerenciar a vida útil do task_handle objeto. A versão do método que leva uma referência a um objeto de função como um parâmetro envolve a alocação de heap dentro do tempo de execução que pode ser executar menos bem que usar a versão que pega uma referência a um task_handle objeto.

template<
   typename _Function
>
void run(
   const _Function& _Func
);
template<
   typename _Function
>
void run(
   task_handle<_Function>& _Task_handle
);

Parâmetros

  • _Function
    O tipo de objeto de função que será chamado para executar o corpo da alça de tarefa.

  • _Func
    Uma função que será chamada para invocar o corpo da tarefa. Isso pode ser uma expressão lambda ou outro objeto que oferece suporte a uma versão do operador de chamada de função com a assinatura void operator()().

  • _Task_handle
    Um identificador para o trabalho agendado. Observe que o chamador tem responsabilidade para a vida útil deste objeto. O tempo de execução continuará esperava live até o wait ou run_and_wait método foi chamado neste task_group objeto.

Comentários

O runtime agenda a função de trabalho fornecida para ser executado em um momento posterior, o que pode ser após retorna da função de chamada. Esse método usa um task_handle o objeto para manter uma cópia da função de trabalho fornecida. Portanto, quaisquer alterações de estado que ocorrem em um objeto de função que você passa para este método não aparecerá em sua cópia desse objeto de função. Além disso, certifique-se de que o tempo de vida de todos os objetos que você passa pelo ponteiro ou por referência à função de trabalho permaneça válido até que a função de trabalho retorne.

Se a task_group destructs como resultado de pilha desenrolar a partir de uma exceção, você não precisará garantir que uma chamada foi feita qualquer do wait ou run_and_wait método. Nesse caso, o destruidor será adequadamente Cancelar e aguardar tarefa representada pela _Task_handle parâmetro para concluir.

O método lança um invalid_multiple_scheduling exceção se a tarefa de lidar com determinado pelo _Task_handle parâmetro já foi agendado para um objeto de grupo de tarefas por meio do run método e não houve nenhuma chamada intermediárias a um a wait ou run_and_wait método em que grupo de tarefas.

Requisitos

Cabeçalho: PPL.h

Namespace: Simultaneidade

Consulte também

Referência

Classe de task_group

Método de task_group::wait

Conceitos

Paralelismo de tarefas (Runtime de simultaneidade)

Outros recursos

Método de task_group::run_and_wait