Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De PPL-klasse (Parallel Patterns Library). task Een task object vertegenwoordigt werk dat asynchroon en gelijktijdig kan worden uitgevoerd met andere taken en parallel werk dat wordt geproduceerd door parallelle algoritmen in de Gelijktijdigheidsruntime. Het produceert een resultaat van het type _ResultType bij een geslaagde voltooiing. Taken van het type task<void> produceren geen resultaat. Een taak kan onafhankelijk van andere taken worden gewacht en geannuleerd. Het kan ook worden samengesteld met andere taken met behulp van vervolgpatronen(then) en join(when_all) en keuzepatronenwhen_any. Wanneer een taakobject wordt toegewezen aan een nieuwe variabele, is het gedrag dat van std::shared_ptr; met andere woorden, beide objecten vertegenwoordigen dezelfde onderliggende taak.
Syntaxis
template <>
class task<void>;
template<typename _ResultType>
class task;
Parameterwaarden
_ResultType
Het type resultaat dat de taak produceert.
Leden
Openbare typedefs
| Naam | Beschrijving |
|---|---|
result_type |
Het type resultaat dat een object van deze klasse produceert. |
Openbare constructors
| Naam | Beschrijving |
|---|---|
| taak | Overbelast. Maakt een task-object. |
Openbare methoden
| Naam | Beschrijving |
|---|---|
| verkrijg | Overbelast. Retourneert het resultaat dat deze taak heeft geproduceerd. Als de taak zich niet in een terminalstatus bevindt, wacht een aanroep om te get wachten tot de taak is voltooid. Deze methode retourneert geen waarde wanneer een taak met een result_type van voidwordt aangeroepen. |
| is_apartment_aware | Bepaalt of de taak een Windows Runtime-interface IAsyncInfo uitpakt of afdaalt van een dergelijke taak. |
| is_done | Bepaalt of de taak is voltooid. |
| Scheduler | Retourneert de scheduler voor deze taak |
| vervolgens | Overbelast. Hiermee voegt u een vervolgtaak toe aan deze taak. |
| wachten | Wacht tot deze taak een terminalstatus heeft bereikt. Het is mogelijk wait om de taak inline uit te voeren als aan alle takenafhankelijkheden wordt voldaan en deze nog niet is opgehaald voor uitvoering door een achtergrondmedewerker. |
Openbare operators
| Naam | Beschrijving |
|---|---|
| operator!= | Overbelast. Bepaalt of twee task objecten verschillende interne taken vertegenwoordigen. |
| operator = | Overbelast. Hiermee wordt de inhoud van het ene task object vervangen door een ander object. |
| operator== | Overbelast. Bepaalt of twee task objecten dezelfde interne taak vertegenwoordigen. |
Opmerkingen
Zie taakparallellismevoor meer informatie.
Overnamehiƫrarchie
task
Behoeften
Koptekst: ppltasks.h
naamruimte: gelijktijdigheid
krijgen
Retourneert het resultaat dat deze taak heeft geproduceerd. Als de taak zich niet in een terminalstatus bevindt, wacht een aanroep om te get wachten tot de taak is voltooid. Deze methode retourneert geen waarde wanneer een taak met een result_type van voidwordt aangeroepen.
_ResultType get() const;
void get() const;
Retourwaarde
Het resultaat van de taak.
Opmerkingen
Als de taak wordt geannuleerd, genereert een aanroep om get een task_canceled uitzondering te genereren. Als de taak een andere uitzondering heeft aangetroffen of als er een uitzondering is doorgegeven vanuit een antecedent-taak, genereert een aanroep om die uitzondering uit te get voeren.
Belangrijk
Roep in een UWP-app (Universal Windows Platform) geen gelijktijdigheid aan::task::wait or get (wait aanroepen get) in code die wordt uitgevoerd op de gebruikersinterfacethread. Anders genereert de runtime gelijktijdigheid::invalid_operation omdat deze methoden de huidige thread blokkeren en ervoor kunnen zorgen dat de app niet meer reageert. U kunt de get methode echter aanroepen om het resultaat van de antecedent-taak te ontvangen in een vervolg op basis van een taak, omdat het resultaat onmiddellijk beschikbaar is.
is_apartment_aware
Bepaalt of de taak een Windows Runtime-interface IAsyncInfo uitpakt of afdaalt van een dergelijke taak.
bool is_apartment_aware() const;
Retourwaarde
true als de taak een IAsyncInfo interface uitpakt of afstammt van een dergelijke taak, false anders.
taak::is_done methode (Gelijktijdigheidsruntime)
Bepaalt of de taak is voltooid.
bool is_done() const;
Retourwaarde
Waar als de taak is voltooid, anders onwaar.
Opmerkingen
De functie retourneert waar als de taak is voltooid of geannuleerd (met of zonder uitzondering van de gebruiker).
operator!=
Bepaalt of twee task objecten verschillende interne taken vertegenwoordigen.
bool operator!= (const task<_ResultType>& _Rhs) const;
bool operator!= (const task<void>& _Rhs) const;
Parameterwaarden
_Rhs
De taak die moet worden vergeleken.
Retourwaarde
true als de objecten verwijzen naar verschillende onderliggende taken en false anderszins.
operator=
Hiermee wordt de inhoud van het ene task object vervangen door een ander object.
task& operator= (const task& _Other);
task& operator= (task&& _Other);
Parameterwaarden
_Ander
Het bronobject task.
Retourwaarde
Opmerkingen
Zoals task zich gedraagt als een slimme aanwijzer, vertegenwoordigt deze task objecten na een kopieertoewijzing dezelfde werkelijke taak als _Other wel.
operator==
Bepaalt of twee task objecten dezelfde interne taak vertegenwoordigen.
bool operator== (const task<_ResultType>& _Rhs) const;
bool operator== (const task<void>& _Rhs) const;
Parameterwaarden
_Rhs
De taak die moet worden vergeleken.
Retourwaarde
true als de objecten verwijzen naar dezelfde onderliggende taak en false anders.
taak::scheduler-methode (gelijktijdigheidsruntime)
Retourneert de scheduler voor deze taak
scheduler_ptr scheduler() const;
Retourwaarde
Een aanwijzer naar de planner
taak
Maakt een task-object.
task();
template<typename T>
__declspec(
noinline) explicit task(T _Param);
template<typename T>
__declspec(
noinline) explicit task(T _Param, const task_options& _TaskOptions);
task(
const task& _Other);
task(
task&& _Other);
Parameterwaarden
T
Het type parameter waaruit de taak moet worden samengesteld.
_Param
De parameter waaruit de taak moet worden samengesteld. Dit kan een lambda, een functieobject, een task_completion_event<result_type> object of een Windows::Foundation::IAsyncInfo zijn als u taken gebruikt in uw Windows Runtime-app. Het lambda- of functieobject moet een type zijn dat gelijk is aan std::function<X(void)>, waarbij X een variabele van het type result_typekan zijn, task<result_type>of een Windows::Foundation::IAsyncInfo in Windows Runtime-apps.
_TaskOptions
De taakopties omvatten annuleringstoken, planner, enzovoort
_Ander
Het bronobject task.
Opmerkingen
De standaardconstructor voor een task is alleen aanwezig om taken in containers te laten gebruiken. Een standaard samengestelde taak kan pas worden gebruikt als u er een geldige taak aan toewijst. Methoden zoals get, wait of then genereren een invalid_argument uitzondering wanneer een standaard samengestelde taak wordt aangeroepen.
Een taak die op basis van een task_completion_event taak wordt gemaakt, wordt voltooid (en de vervolgen zijn gepland) wanneer de voltooiingsbeurtenis van de taak is ingesteld.
De versie van de constructor die een annuleringstoken gebruikt, maakt een taak die kan worden geannuleerd met behulp van het cancellation_token_source token dat is verkregen van. Taken die zonder een annuleringstoken zijn gemaakt, kunnen niet worden geannuleerd.
Taken die zijn gemaakt op basis van een Windows::Foundation::IAsyncInfo interface of een lambda die een IAsyncInfo interface retourneert, bereiken hun terminalstatus wanneer de ingesloten Windows Runtime asynchrone bewerking of actie is voltooid. Op dezelfde manier worden taken die zijn gemaakt op basis van een lambda die een task<result_type> eindstatus retourneert, geretourneerd wanneer de binnenste taak de terminalstatus bereikt en niet wanneer de lambda terugkeert.
task gedraagt zich als een slimme aanwijzer en is veilig om door te geven op waarde. Het kan worden geopend door meerdere threads zonder dat er vergrendelingen nodig zijn.
De constructor overbelast die een Windows::Foundation::IAsyncInfo-interface of een lambda retourneert die een dergelijke interface retourneert, zijn alleen beschikbaar voor Windows Runtime-apps.
Zie taakparallellismevoor meer informatie.
dan
Hiermee voegt u een vervolgtaak toe aan deze taak.
template<typename _Function>
__declspec(
noinline) auto then(const _Function& _Func) const -> typename details::_ContinuationTypeTraits<_Function,
_ResultType>::_TaskOfType;
template<typename _Function>
__declspec(
noinline) auto then(const _Function& _Func,
const task_options& _TaskOptions) const -> typename details::_ContinuationTypeTraits<_Function,
_ResultType>::_TaskOfType;
template<typename _Function>
__declspec(
noinline) auto then(const _Function& _Func,
cancellation_token _CancellationToken,
task_continuation_context _ContinuationContext) const -> typename details::_ContinuationTypeTraits<_Function,
_ResultType>::_TaskOfType;
template<typename _Function>
__declspec(
noinline) auto then(const _Function& _Func,
const task_options& _TaskOptions = task_options()) const -> typename details::_ContinuationTypeTraits<_Function,
void>::_TaskOfType;
template<typename _Function>
__declspec(
noinline) auto then(const _Function& _Func,
cancellation_token _CancellationToken,
task_continuation_context _ContinuationContext) const -> typename details::_ContinuationTypeTraits<_Function,
void>::_TaskOfType;
Parameterwaarden
_Functie
Het type van het functieobject dat door deze taak wordt aangeroepen.
_Func
De vervolgfunctie die moet worden uitgevoerd wanneer deze taak is voltooid. Deze vervolgfunctie moet als invoer een variabele van een van result_type beide of task<result_type>, waarbij result_type het type van het resultaat is dat deze taak produceert.
_TaskOptions
De taakopties omvatten annuleringstoken, scheduler en vervolgcontext. Standaard worden de vorige drie opties overgenomen van de antecedent-taak
_CancellationToken
Het annuleringstoken dat moet worden gekoppeld aan de vervolgtaak. Een vervolgtaak die wordt gemaakt zonder een annuleringstoken, neemt het token van de antecedent-taak over.
_ContinuationContext
Een variabele die aangeeft waar de voortzetting moet worden uitgevoerd. Deze variabele is alleen nuttig wanneer deze wordt gebruikt in een UWP-app. Zie task_continuation_context voor meer informatie
Retourwaarde
De zojuist gemaakte vervolgtaak. Het resultaattype van de geretourneerde taak wordt bepaald door wat _Func retourneert.
Opmerkingen
De overbelastingen hiervan then nemen een lambda of functor die een Windows::Foundation::IAsyncInfo-interface retourneert, zijn alleen beschikbaar voor Windows Runtime-apps.
Zie Taakparallellisme voor meer informatie over het gebruik van taakvervolgingen voor het opstellen van asynchroon werk.
wachten
Wacht tot deze taak een terminalstatus heeft bereikt. Het is mogelijk wait om de taak inline uit te voeren als aan alle takenafhankelijkheden wordt voldaan en deze nog niet is opgehaald voor uitvoering door een achtergrondmedewerker.
task_status wait() const;
Retourwaarde
Een task_status waarde die kan zijn completed of canceled. Als er tijdens de uitvoering een uitzondering is opgetreden of als er een uitzondering is doorgegeven vanuit een antecedent-taak, wait wordt die uitzondering gegenereerd.
Opmerkingen
Belangrijk
Roep in een UWP-app (Universal Windows Platform) geen wait code aan die wordt uitgevoerd op de thread van de gebruikersinterface. Anders genereert de runtime gelijktijdigheid::invalid_operation omdat deze methode de huidige thread blokkeert en ervoor kan zorgen dat de app niet meer reageert. U kunt echter de gelijktijdigheid::taak::get-methode aanroepen om het resultaat van de antecedent-taak te ontvangen in een vervolg op basis van een taak.