Condividi tramite


Metodo task_group::run

Consente di pianificare un'attività sull'oggetto task_group.Se un oggetto task_handle viene passato come parametro run, il chiamante è responsabile della gestione della durata dell'oggetto task_handle.La versione del metodo che contiene un riferimento a un oggetto funzione come parametro comporta l'allocazione heap nel runtime eseguibile in misura qualitativamente inferiore rispetto all'utilizzo della versione che contiene un riferimento all'oggetto task_handle.La versione che accetta il parametro _Placement causa l'attività essere influenzato da eseguire nel percorso specificato dal parametro.

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
);

Parametri

  • _Function
    Tipo dell'oggetto funzione che sarà richiamato per eseguire il corpo del handle delle attività.

  • _Func
    Una funzione che sarà chiamata per richiamare il corpo dell'attività.Potrebbe essere un'espressione lambda o un altro oggetto che supporta una versione dell'operatore di chiamata di funzione con la firma void operator()().

  • _Placement
    Un riferimento al percorso in cui l'attività rappresentata dal parametro di _Func necessario eseguire.

  • _Task_handle
    Un handle al lavoro pianificato.Notare che il chiamante ha la responsabilità della durata del oggetto.Il runtime continuerà a prevedere di esistere finché il metodo wait o run_and_wait non viene chiamato su tale oggetto task_group.

Note

Il runtime programma la funzione lavoro fornita in modo che venga eseguita in un secondo momento, che può essere dopo la restituzione della funzione chiamante.Questo metodo utilizza un oggetto task_handle per mantenere una copia della funzione lavoro svolta.Di conseguenza, le modifiche di stato che si verificano in un oggetto funzione passato a questo metodo non saranno visualizzati nella copia dell'oggetto funzione.Assicurarsi inoltre che la durata degli oggetti che si passa con il puntatore o con riferimento alla funzione lavoro rimanga valida fino a quando la funzione lavoro restituisce.

Se task_group distrugge come risultato di rimozione dello stack da un'eccezione, non è necessario garantire che una chiamata sia stata effettuata al metodo wait o run_and_wait.In questo caso, il distruttore annullerà in modo appropriato e attenderà l'attività da completare rappresentata dal parametro _Task_handle.

Il metodo genera un'eccezione invalid_multiple_scheduling se l'handle delle attività fornito dal parametro _Task_handle è già stato pianificato su un oggetto del gruppo di attività tramite il metodo run e non vi è stata alcuna chiamata intermedia al metodo wait o run_and_wait in tale gruppo di attività.

Requisiti

Header: ppl.h

Concorrenza diSpazio dei nomi:

Vedere anche

Riferimenti

Classe task_group

Metodo task_group::wait

Metodo task_group::run_and_wait

Classe location

Concetti

Parallelismo delle attività (runtime di concorrenza)