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
Método task_group::run_and_wait