Condividi tramite


Classe task_group

La classe task_group rappresenta un insieme di lavoro parallelo che può essere messo in attesa o annullato.

class task_group;

Membri

Costruttori pubblici

Nome

Oggetto di descrizione

Costruttore task_group::task_group

Costruisce un nuovo oggetto task_group.

Distruttore task_group::~task_group

Elimina un oggetto task_group. È prevista la chiamata al metodo wait o run_and_wait sull'oggetto prima dell'esecuzione del distruttore, a meno che il distruttore sia in esecuzione in seguito alla rimozione dello stack a causa di un'eccezione.

Metodi pubblici

Nome

Oggetto di descrizione

Metodo task_group::cancel

Consente di eseguire il migliore tentativo per annullare la sottostruttura di lavoro con radice nel gruppo di attività. Ogni attività pianificata nel gruppo di attività sarà transitivamente annullata, se possibile.

Metodo task_group::is_canceling

Consente di informare il chiamante se il gruppo di attività è attualmente nel mezzo di un annullamento. Non indica necessariamente che il metodo cancel è stato chiamato sull'oggetto task_group (anche se in questo modo si qualifica sicuramente questo metodo a restituire true). È possibile il caso in cui l'oggetto task_group è in esecuzione inline e un gruppo di attività più in alto nella struttura ad albero del lavoro viene annullato. Anche casi come questi dove il runtime può determinare in anticipo che l'annullamento si propagherà tramite questo oggetto task_group, sarà restituito true.

Metodo task_group::run

Metodo di overload. 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.

Metodo task_group::run_and_wait

Metodo di overload. Consente di pianificare un'attività in esecuzione inline sul contesto di chiamata con l'assistenza dell'oggetto task_group per il completo supporto di annullamento. La funzione attende pertanto fino al completamento o all'annullamento di tutto il lavoro sull'oggetto task_group. Se un oggetto task_handle viene passato come parametro run_and_wait, il chiamante è responsabile della gestione della durata dell'oggetto task_handle.

Metodo task_group::wait

Consente di attendere fino al completamento o all'annullamento di tutto il lavoro sull'oggetto task_group.

Note

A differenza della classe structured_task_group ampiamente limitata, quella task_group è un costrutto molto più generico. Non ha nessuna delle restrizioni descritte da structured_task_group. Gli oggetti task_group possono essere utilizzati in modo sicuro attraverso dei thread e nelle modalità in formato libero. Lo svantaggio del costrutto task_group consiste nel non poter eseguire allo stesso modo il costrutto structured_task_group per attività che eseguono piccole quantità di lavoro.

Per ulteriori informazioni, vedere Parallelismo delle attività (runtime di concorrenza).

Gerarchia di ereditarietà

task_group

Requisiti

Header: ppl.h

Spazio dei nomi: Concurrency

Vedere anche

Riferimenti

Spazio dei nomi Concurrency

Classe structured_task_group

Classe task_handle