Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Klassen Parallel Patterns Library (PPL). task
Ett task
objekt representerar arbete som kan köras asynkront och samtidigt med andra uppgifter och parallellt arbete som produceras av parallella algoritmer i Concurrency Runtime. Det ger ett resultat av typen _ResultType
vid slutförande. Uppgifter av typen task<void>
ger inget resultat. En uppgift kan vänta på och avbrytas oberoende av andra uppgifter. Den kan också bestå av andra uppgifter med hjälp av fortsättningsmönster(then
) och kopplingsmönster(when_all
) och choice(when_any
). När ett aktivitetsobjekt tilldelas till en ny variabel är beteendet för std::shared_ptr
. Med andra ord representerar båda objekten samma underliggande uppgift.
Syntax
template <>
class task<void>;
template<typename _ResultType>
class task;
Parameterar
_ResultType
Typen av resultat som aktiviteten genererar.
Medlemmar
Offentliga typedefs
Namn | Beskrivning |
---|---|
result_type |
Typen av resultat som ett objekt i den här klassen genererar. |
Offentliga konstruktorer
Namn | Beskrivning |
---|---|
uppgift | Överbelastad. Konstruerar ett task objekt. |
Offentliga metoder
Namn | Beskrivning |
---|---|
få | Överbelastad. Returnerar resultatet som den här aktiviteten skapade. Om aktiviteten inte är i ett terminaltillstånd väntar ett anrop till på att get aktiviteten ska slutföras. Den här metoden returnerar inte ett värde när den anropas för en aktivitet med en result_type av void . |
is_apartment_aware | Avgör om uppgiften skriver upp ett Windows Runtime-gränssnitt IAsyncInfo eller är fallande från en sådan aktivitet. |
is_done | Avgör om aktiviteten har slutförts. |
Scheduler | Returnerar schemaläggaren för den här aktiviteten |
då | Överbelastad. Lägger till en fortsättningsaktivitet i den här aktiviteten. |
Vänta | Väntar på att den här uppgiften ska nå ett terminaltillstånd. Det är möjligt att wait köra uppgiften infogad, om alla aktivitetsberoenden är uppfyllda och inte redan har hämtats för körning av en bakgrundsarbetare. |
Offentliga operatörer
Namn | Beskrivning |
---|---|
operator!= | Överbelastad. Avgör om två task objekt representerar olika interna uppgifter. |
operator= | Överbelastad. Ersätter innehållet i ett objekt med ett task annat. |
operator== | Överbelastad. Avgör om två task objekt representerar samma interna uppgift. |
Anmärkningar
Mer information finns i aktivitetsparallellitet.
Arvshierarki
task
Kravspecifikation
Rubrik: ppltasks.h
namnområde: samtidighet
få
Returnerar resultatet som den här aktiviteten skapade. Om aktiviteten inte är i ett terminaltillstånd väntar ett anrop till på att get
aktiviteten ska slutföras. Den här metoden returnerar inte ett värde när den anropas för en aktivitet med en result_type
av void
.
_ResultType get() const;
void get() const;
Returvärde
Resultatet av uppgiften.
Anmärkningar
Om uppgiften avbryts utlöser ett anrop till get
ett task_canceled undantag. Om uppgiften påträffade ett annat undantag eller om ett undantag spreds till den från en tidigare uppgift, utlöser ett anrop till get
det undantaget.
Viktigt!
I en UWP-app (Universal Windows Platform) ska du inte anropa samtidighet::uppgift::vänta eller get
(wait
anrop get
) i kod som körs i tråden för användargränssnittet. Annars genererar körningen samtidighet::invalid_operation eftersom dessa metoder blockerar den aktuella tråden och kan leda till att appen inte svarar. Du kan dock anropa get
metoden för att ta emot resultatet av den föregående aktiviteten i en aktivitetsbaserad fortsättning eftersom resultatet är omedelbart tillgängligt.
is_apartment_aware
Avgör om uppgiften skriver upp ett Windows Runtime-gränssnitt IAsyncInfo
eller är fallande från en sådan aktivitet.
bool is_apartment_aware() const;
Returvärde
true
om uppgiften skriver upp ett IAsyncInfo
gränssnitt eller har härstammar från en sådan uppgift, false
annars.
task::is_done Method (Concurrency Runtime)
Avgör om aktiviteten har slutförts.
bool is_done() const;
Returvärde
Sant om aktiviteten har slutförts, annars falskt.
Anmärkningar
Funktionen returnerar sant om aktiviteten har slutförts eller avbrutits (med eller utan användarfel).
operator!=
Avgör om två task
objekt representerar olika interna uppgifter.
bool operator!= (const task<_ResultType>& _Rhs) const;
bool operator!= (const task<void>& _Rhs) const;
Parameterar
_Rhs
Den uppgift som ska jämföras.
Returvärde
true
om objekten refererar till olika underliggande uppgifter och false
på annat sätt.
operator=
Ersätter innehållet i ett objekt med ett task
annat.
task& operator= (const task& _Other);
task& operator= (task&& _Other);
Parameterar
_Annan
Källobjektet task
.
Returvärde
Anmärkningar
Som task
fungerar som en smart pekare representerar objekten task
samma faktiska uppgift som _Other
när en kopieringstilldelning har tilldelats.
operator==
Avgör om två task
objekt representerar samma interna uppgift.
bool operator== (const task<_ResultType>& _Rhs) const;
bool operator== (const task<void>& _Rhs) const;
Parameterar
_Rhs
Den uppgift som ska jämföras.
Returvärde
true
om objekten refererar till samma underliggande uppgift och false
i annat fall.
task::scheduler Method (Concurrency Runtime)
Returnerar schemaläggaren för den här aktiviteten
scheduler_ptr scheduler() const;
Returvärde
En pekare till schemaläggaren
uppgift
Konstruerar ett task
objekt.
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);
Parameterar
T
Typen av parameter som uppgiften ska konstrueras från.
_Param
Parametern som uppgiften ska konstrueras från. Det kan vara en lambda, ett funktionsobjekt, ett task_completion_event<result_type>
objekt eller en Windows::Foundation::IAsyncInfo om du använder uppgifter i Windows Runtime-appen. Lambda- eller funktionsobjektet ska vara en typ som motsvarar std::function<X(void)>
, där X kan vara en variabel av typen result_type
, task<result_type>
eller en Windows::Foundation::IAsyncInfo i Windows Runtime-appar.
_TaskOptions
Aktivitetsalternativen inkluderar annulleringstoken, schemaläggaren osv.
_Annan
Källobjektet task
.
Anmärkningar
Standardkonstruktorn för en task
finns bara för att tillåta att uppgifter används i containrar. Det går inte att använda en standardkonstruerad aktivitet förrän du tilldelar en giltig aktivitet till den. Metoder som get
, wait
eller then
utlöser ett invalid_argument undantag när det anropas för en standardkonstruerad uppgift.
En uppgift som skapas från en task_completion_event
slutförs (och har dess fortsättningar schemalagda) när aktivitetens slutförandehändelse har angetts.
Den version av konstruktorn som tar en annulleringstoken skapar en uppgift som kan avbrytas med hjälp av token cancellation_token_source
som hämtades från. Uppgifter som skapats utan en annulleringstoken kan inte avbrytas.
Uppgifter som skapats från ett Windows::Foundation::IAsyncInfo
gränssnitt eller en lambda som returnerar ett IAsyncInfo
gränssnitt når sitt terminaltillstånd när den omslutna asynkrona Windows Runtime-åtgärden slutförs. På samma sätt returnerar uppgifter som skapats från en lambda ett task<result_type>
nå deras terminaltillstånd när den inre aktiviteten når sitt terminaltillstånd och inte när lambda returnerar.
task
beter sig som en smart pekare och är säker att skicka runt efter värde. Det kan nås av flera trådar utan att behöva lås.
Konstruktorn överbelastas med ett Windows::Foundation::IAsyncInfo-gränssnitt eller en lambda som returnerar ett sådant gränssnitt, är endast tillgängliga för Windows Runtime-appar.
Mer information finns i aktivitetsparallellitet.
sedan...
Lägger till en fortsättningsaktivitet i den här aktiviteten.
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;
Parameterar
_Funktion
Typen av funktionsobjekt som ska anropas av den här uppgiften.
_Func
Fortsättningsfunktionen som ska köras när den här uppgiften slutförs. Den här fortsättningsfunktionen måste ta som indata en variabel av antingen result_type
eller task<result_type>
, där result_type
är den typ av resultat som aktiviteten genererar.
_TaskOptions
Aktivitetsalternativen omfattar annulleringstoken, schemaläggaren och fortsättningskontexten. Som standard ärvs de tidigare 3 alternativen från den föregående aktiviteten
_CancellationToken
Annulleringstoken som ska associeras med fortsättningsaktiviteten. En fortsättningsaktivitet som skapas utan en annulleringstoken ärver token för den tidigare uppgiften.
_ContinuationContext
En variabel som anger var fortsättningen ska köras. Den här variabeln är bara användbar när den används i en UWP-app. Mer information finns i task_continuation_context
Returvärde
Den nyskapade fortsättningsaktiviteten. Resultattypen för den returnerade aktiviteten bestäms av vad som _Func
returneras.
Anmärkningar
Överlagringarna av then
den tar en lambda eller en functor som returnerar ett Windows::Foundation::IAsyncInfo-gränssnitt, är endast tillgängliga för Windows Runtime-appar.
Mer information om hur du använder aktivitetsfortsättningar för att skapa asynkront arbete finns i Aktivitetsparallellitet.
vänta
Väntar på att den här uppgiften ska nå ett terminaltillstånd. Det är möjligt att wait
köra uppgiften infogad, om alla aktivitetsberoenden är uppfyllda och inte redan har hämtats för körning av en bakgrundsarbetare.
task_status wait() const;
Returvärde
Ett task_status
värde som kan vara antingen completed
eller canceled
. Om uppgiften påträffade ett undantag under körningen, eller om ett undantag spreds till den från en tidigare uppgift, wait
utlöser det undantaget.
Anmärkningar
Viktigt!
I en UWP-app (Universal Windows Platform) anropar wait
du inte kod som körs i användargränssnittstråden. Annars genererar körningen samtidighet::invalid_operation eftersom den här metoden blockerar den aktuella tråden och kan leda till att appen inte svarar. Du kan dock anropa metoden concurrency::task::get för att ta emot resultatet av den tidigare aktiviteten i en aktivitetsbaserad fortsättning.