Compartilhar via


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 usa uma referência a um objeto de função como um parâmetro envolve alocação de heap dentro do tempo de execução que pode ser executar menos bem que usar a versão que leva uma referência a um task_handle objeto.A versão que aceita o parâmetro _Placement faz com que a tarefa a ser viesado para executar no local especificado por esse parâmetro.

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

template<
   typename _Function
>
void run(
   const _Function& _Func,
   location& _Placement
);

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

template<
   typename _Function
>
void run(
   task_handle<_Function>& _Task_handle,
   location& _Placement
);

Parâmetros

  • _Function
    O tipo de objeto de função que será chamado para executar o corpo do identificador 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()().

  • _Placement
    O local onde a tarefa é representada por uma referência a _Func parâmetro deve ser executado.

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

Comentários

O runtime agenda a função do trabalho fornecida para executar em um momento posterior, pode ser após a função chamada retorna.Esse método usa um task_handle objeto para armazenar 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ê passar para esse 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 passam por ponteiro ou referência para a função de trabalho permanece válido até retorna a função de trabalho.

Se o task_group destructs como resultado de pilha desenrolar a partir de uma exceção, você não precisa garantir que uma chamada foi feita para ambos os wait ou run_and_wait método.Nesse caso, o destruidor será adequadamente Cancelar e espere a 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 via o run método e não houve nenhuma chamada intermediárias a um a wait ou run_and_wait método esse grupo de tarefas.

Requisitos

Cabeçalho: ppl.h

Namespace: concorrência

Consulte também

Referência

classe de task_group

método de task_group::wait

método de task_group::run_and_wait

local de classe

Conceitos

Paralelismo de tarefa (tempo de execução de simultaneidade)