Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
De task_group klasse vertegenwoordigt een verzameling parallelle werkzaamheden die kunnen worden gewacht of geannuleerd.
Syntaxis
class task_group;
Leden
Openbare constructors
| Naam | Description |
|---|---|
| task_group | Overbelast. Maakt een nieuw task_group object. |
| ~task_group Destructor | Vernietigt een task_group object. U wordt verwacht dat u de wait of run_and_wait methode op het object aanroept voordat de destructor wordt aangeroepen, tenzij de destructor wordt aangeroepen als gevolg van stack unwinding veroorzaakt door een uitzondering. |
Openbare methoden
| Naam | Description |
|---|---|
| annuleren | Probeert zo goed mogelijk de subboom van het werk te annuleren die wortelt in deze taakgroep. Elke taak die in de taakgroep is gepland, wordt, indien mogelijk, tijdelijk geannuleerd. |
| is_annuleren | Informeert de aanroeper of de taakgroep zich momenteel in een annuleringsproces bevindt. Dit geeft niet noodzakelijkerwijs aan dat de cancel methode op het task_group object is aangeroepen (hoewel deze methode zeker in aanmerking komt om te retourneren true). Het kan zijn dat het task_group object inline wordt uitgevoerd en dat een taakgroep verder in de werkstructuur is geannuleerd. In gevallen zoals deze waarbij de runtime van tevoren kan bepalen dat de annulering door dit task_group object zal stromen, true wordt ook geretourneerd. |
| uitvoeren | Overbelast. Hiermee plant u een taak op het task_group object. Als een task_handle object als parameter runwordt doorgegeven, is de aanroeper verantwoordelijk voor het beheren van de levensduur van het task_handle object. De versie van de methode die een verwijzing naar een functieobject als parameter gebruikt, omvat heap-toewijzing binnen de runtime die minder goed presteert dan het gebruik van de versie die een verwijzing naar een task_handle object gebruikt. De versie die de parameter _Placement gebruikt, zorgt ervoor dat de taak geneigd is tot uitvoering op de locatie die door die parameter is opgegeven. |
| run_and_wait | Overbelast. Hiermee wordt een taak gepland die inline moet worden uitgevoerd in de aanroepende context met behulp van het task_group object voor volledige annuleringsondersteuning. De functie wacht vervolgens totdat alle werkzaamheden aan het task_group object zijn voltooid of geannuleerd. Als een task_handle object als parameter run_and_waitwordt doorgegeven, is de aanroeper verantwoordelijk voor het beheren van de levensduur van het task_handle object. |
| wachten | Wacht totdat alle werkzaamheden aan het task_group object zijn voltooid of geannuleerd. |
Opmerkingen
In tegenstelling tot de sterk beperkte structured_task_group klasse is de task_group klasse veel algemener. Het heeft geen van de beperkingen die worden beschreven door structured_task_group.
task_group objecten kunnen veilig worden gebruikt over meerdere threads en op allerlei vrije manieren. Het nadeel van de task_group constructie is dat deze mogelijk niet zo goed presteert als de structured_task_group constructie voor taken die kleine hoeveelheden werk uitvoeren.
Zie taakparallellismevoor meer informatie.
Overnamehiërarchie
task_group
Requirements
Koptekst: ppl.h
Naamruimte: concurrentie
cancel
Probeert zo goed mogelijk de subboom van het werk te annuleren die wortelt in deze taakgroep. Elke taak die in de taakgroep is gepland, wordt, indien mogelijk, tijdelijk geannuleerd.
void cancel();
Opmerkingen
Zie Annuleringvoor meer informatie.
is_annuleren
Informeert de aanroeper of de taakgroep zich momenteel in een annuleringsproces bevindt. Dit geeft niet noodzakelijkerwijs aan dat de cancel methode op het task_group object is aangeroepen (hoewel deze methode zeker in aanmerking komt om te retourneren true). Het kan zijn dat het task_group object inline wordt uitgevoerd en dat een taakgroep verder in de werkstructuur is geannuleerd. In gevallen zoals deze waarbij de runtime van tevoren kan bepalen dat de annulering door dit task_group object zal stromen, true wordt ook geretourneerd.
bool is_canceling();
Retourwaarde
Een indicatie of het task_group object zich in het proces van annuleren bevindt (of binnenkort gegarandeerd zal zijn).
Opmerkingen
Zie Annuleringvoor meer informatie.
run
Hiermee plant u een taak op het task_group object. Als een task_handle object als parameter runwordt doorgegeven, is de aanroeper verantwoordelijk voor het beheren van de levensduur van het task_handle object. De versie van de methode die een verwijzing naar een functieobject als parameter gebruikt, omvat heap-toewijzing binnen de runtime die minder goed presteert dan het gebruik van de versie die een verwijzing naar een task_handle object gebruikt. De versie die de parameter _Placement gebruikt, geeft de voorkeur aan uitvoering op de locatie die door die parameter is opgegeven.
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
);
Parameterwaarden
_Functie
Het type van het functieobject dat wordt aangeroepen om de hoofdtekst van de taakgreep uit te voeren.
_Func
Een functie die wordt aangeroepen om de inhoud van de taak uit te voeren. Dit kan een lambda-expressie of een ander object zijn dat een versie van de operator voor functieoproep ondersteunt met de handtekening void operator()().
_Plaatsing
Een verwijzing naar de locatie waar de taak die wordt vertegenwoordigd door de _Func parameter moet worden uitgevoerd.
_Task_handle
Een verwijzing naar het werk dat wordt gepland. Houd er rekening mee dat de beller verantwoordelijk is voor de levensduur van dit object. De runtime verwacht dat deze actief blijft totdat de wait of run_and_wait methode op dit task_group object is aangeroepen.
Opmerkingen
De runtime plant de opgegeven werkfunctie om op een later tijdstip uit te voeren. Dit kan zijn nadat de aanroepende functie wordt geretourneerd. Deze methode maakt gebruik van een task_handle-object voor het opslaan van een kopie van de opgegeven werkfunctie. Daarom worden alle statuswijzigingen die optreden in een functieobject dat u aan deze methode doorgeeft, niet weergegeven in uw kopie van dat functieobject. Zorg er bovendien voor dat de levensduur van objecten die u via een pointer of een referentie naar de werkfunctie doorgeeft geldig blijft totdat de werkfunctie terugkeert.
Als de task_group wordt vernietigd door stack-ontwinding als gevolg van een uitzondering, hoeft u geen garantie te geven dat er een aanroep is gedaan naar de wait- of run_and_wait-methode. In dit geval zal de destructor op de juiste wijze de taak annuleren en wachten tot de taak die wordt vertegenwoordigd door de _Task_handle parameter is voltooid.
De methode genereert een invalid_multiple_scheduling uitzondering als de taakgreep die door de _Task_handle parameter is opgegeven, al is gepland op een taakgroepobject via de run methode en er geen tussenliggende aanroep naar de wait of run_and_wait methode voor die taakgroep is geweest.
uitvoeren_en_wachten
Hiermee wordt een taak gepland die inline moet worden uitgevoerd in de aanroepende context met behulp van het task_group object voor volledige annuleringsondersteuning. De functie wacht vervolgens totdat alle werkzaamheden aan het task_group object zijn voltooid of geannuleerd. Als een task_handle object als parameter run_and_waitwordt doorgegeven, is de aanroeper verantwoordelijk voor het beheren van de levensduur van het task_handle object.
template<
class _Function
>
task_group_status run_and_wait(
task_handle<_Function>& _Task_handle
);
template<
class _Function
>
task_group_status run_and_wait(
const _Function& _Func
);
Parameterwaarden
_Functie
Het type van het functieobject dat wordt aangeroepen om de hoofdtekst van de taak uit te voeren.
_Task_handle
Een verwijzing naar de taak die inline wordt uitgevoerd binnen de oproepende context. Houd er rekening mee dat de beller verantwoordelijk is voor de levensduur van dit object. De runtime blijft verwachten dat deze actief is totdat de uitvoering van de run_and_wait methode is voltooid.
_Func
Een functie die wordt aangeroepen om de hoofdtekst van het werk aan te roepen. Dit kan een lambda-expressie of een ander object zijn dat een versie van de operator voor functieoproep ondersteunt met de handtekening void operator()().
Retourwaarde
Een indicatie of de wachttijd is voldaan of dat de taakgroep is geannuleerd, vanwege een expliciete annuleringsbewerking of een uitzondering die wordt gegenereerd vanuit een van de taken. Zie task_group_status voor meer informatie.
Opmerkingen
Houd er rekening mee dat een of meer taken die voor dit task_group object zijn gepland, inline kunnen worden uitgevoerd in de aanroepende context.
Als een of meer van de taken die zijn gepland voor dit task_group object een uitzondering gooit, selecteert de runtime naar keuze een van deze uitzonderingen en geeft deze door vanuit de aanroep naar de run_and_wait methode.
Wanneer de run_and_wait-methode een task_group-object retourneert, wordt het object opnieuw ingesteld op een schone toestand zodat het opnieuw kan worden gebruikt. Dit omvat het geval waarin het task_group object is geannuleerd.
In het niet-uitzonderlijke pad van uitvoering heeft u de verplichting om deze methode of de wait methode aan te roepen voordat de destructor van de task_group wordt uitgevoerd.
taakgroep
Maakt een nieuw task_group object.
task_group();
task_group(
cancellation_token _CancellationToken
);
Parameterwaarden
_CancellationToken
Een annuleringstoken dat aan deze taakgroep moet worden gekoppeld. De taakgroep wordt geannuleerd wanneer het token wordt geannuleerd.
Opmerkingen
De constructor die een annuleringstoken gebruikt, maakt een task_group token dat wordt geannuleerd wanneer de bron die is gekoppeld aan het token wordt geannuleerd. Als u een expliciet annuleringstoken opneemt, wordt deze taakgroep ook geïsoleerd van deelname aan een impliciete annulering van een bovenliggende groep met een ander token of geen token.
~taak_groep
Vernietigt een task_group object. U wordt verwacht dat u de wait of run_and_wait methode op het object aanroept voordat de destructor wordt aangeroepen, tenzij de destructor wordt aangeroepen als gevolg van stack unwinding veroorzaakt door een uitzondering.
~task_group();
Opmerkingen
Als de destructor wordt uitgevoerd als gevolg van normale uitvoering (bijvoorbeeld niet stapelen als gevolg van een uitzondering) en noch de wait noch run_and_wait methoden zijn aangeroepen, kan de destructor een missing_wait uitzondering genereren.
wait
Wacht totdat alle werkzaamheden aan het task_group object zijn voltooid of geannuleerd.
task_group_status wait();
Retourwaarde
Een indicatie of de wachttijd is voldaan of dat de taakgroep is geannuleerd, vanwege een expliciete annuleringsbewerking of een uitzondering die wordt gegenereerd vanuit een van de taken. Zie task_group_status voor meer informatie.
Opmerkingen
Houd er rekening mee dat een of meer taken die voor dit task_group object zijn gepland, inline kunnen worden uitgevoerd in de aanroepende context.
Als een of meer van de taken die zijn gepland voor dit task_group object een uitzondering gooit, selecteert de runtime naar keuze een van deze uitzonderingen en geeft deze door vanuit de aanroep naar de wait methode.
Als u een wait object aanroepttask_group, wordt het opnieuw ingesteld op een schone status waar het opnieuw kan worden gebruikt. Dit omvat het geval waarin het task_group object is geannuleerd.
In het niet-uitzonderlijke pad van uitvoering heeft u de verplichting om deze methode of de run_and_wait methode aan te roepen voordat de destructor van de task_group wordt uitgevoerd.
Zie ook
concurrentie Namespace
structured_task_group-klasse
task_handle-klasse