Partilhar via


Método task_group::run

Agenda uma tarefa no objeto de task_group . Se um objeto de task_handle é passado como um parâmetro a run, o chamador é responsável por gerenciar o tempo de vida do objeto de task_handle . A versão do método que usa uma referência a um objeto de função como um parâmetro envolve a alocação do heap no tempo de execução que pode ser executado bem menor do que usar a versão que usa uma referência a um objeto de task_handle . A versão que usa o parâmetro _Placement faz a tarefa ser removido para executar no local especificado pelo 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á invocado para executar o corpo do identificador da tarefa.

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

  • _Placement
    Uma referência ao local em que a tarefa representada pelo parâmetro de _Func deve executar.

  • _Task_handle
    Um identificador para o trabalho que está sendo agendada. Observe que o chamador tem responsabilidade do tempo de vida deste objeto. O tempo de execução continuará a esperar que a viver até wait ou o método de run_and_wait esteve chamado este objeto de task_group .

Comentários

O tempo de execução a função agenda de trabalho fornecida para executar posteriormente, que pode ser depois que a função de chamada retorna. Esse método usa um objeto de task_handle para manter uma cópia da função de trabalho fornecida. Em virtude disso, qualquer alteração de estado que ocorrem em um objeto de função que você transmita a esse método não aparecerão em sua cópia do objeto de função. Além disso, certifique-se de que o tempo de vida de alguns objetos que você passar pelo ponteiro ou em função da função de trabalho permaneça válida até que a função de trabalho retorna.

Se os destructs de task_group como o resultado da pilha que desenrola de uma exceção, você não precisa garantir que uma chamada esteve fazer a wait o método ou de run_and_wait . Nesse caso, o destruidor adequadamente e cancelará aguardará a tarefa representada pelo parâmetro de _Task_handle para concluir.

O método gerará uma exceção de invalid_multiple_scheduling se o identificador da tarefa determinada pelo parâmetro de _Task_handle já tiver sido agendada em um objeto de grupo de trabalho através do método de run e não houve chamada de intervenção a wait o método ou de run_and_wait nesse grupo de trabalho.

Requisitos

Cabeçalho: ppl.h

Namespace: simultaneidade

Consulte também

Referência

Classe task_group

Método task_group::wait

Método task_group::run_and_wait

Classe location

Conceitos

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