Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A párhuzamos minták könyvtára (PPL) task osztály. Az task objektumok olyan munkákat jelölnek, amelyek aszinkron módon és egyidejűleg végrehajthatók más feladatokkal és párhuzamos algoritmusokkal az egyidejűségi futtatókörnyezetben. Sikeres befejezés esetén _ResultType típusú eredményt hoz létre. A típusfeladatok task<void> nem eredményeznek eredményt. A feladatok más feladatoktól függetlenül várakoztatva és megszakítva lehetnek. Más feladatokkal is összeállítható folytatások(then), összevonási(when_all) és választási(when_any) minták használatával. Ha egy tevékenységobjektumot egy új változóhoz rendelnek hozzá, a viselkedés std::shared_ptraz ; vagyis mindkét objektum ugyanazt az alapul szolgáló tevékenységet képviseli.
Szemantika
template <>
class task<void>;
template<typename _ResultType>
class task;
Paraméterek
_ResultType
A tevékenység által előállított eredmény típusa.
Tagok
Nyilvános típustdefiníciók
| Név | Leírás |
|---|---|
result_type |
Az osztály objektuma által előállított eredmény típusa. |
Nyilvános konstruktorok
| Név | Leírás |
|---|---|
| tevékenység | Túlterhelt. Egy task objektumot hoz létre. |
Nyilvános módszerek
| Név | Leírás |
|---|---|
| szerezze meg | Túlterhelt. A tevékenység által létrehozott eredményt adja vissza. Ha a feladat nincs terminálállapotban, egy get hívás megvárja, amíg a feladat befejeződik. Ez a metódus nem ad vissza értéket, amikor egy feladaton a result_type a void értékkel kerül meghívásra. |
| is_apartment_aware | Meghatározza, hogy a feladat feloldja-e a Windows futtatókörnyezet IAsyncInfo felületét, vagy egy ilyen feladatból származik-e. |
| elkészült | Meghatározza, hogy a tevékenység befejeződött-e. |
| Táblázat | A feladat ütemezőjét adja vissza |
| akkor | Túlterhelt. Hozzáad egy folytatási feladatot ehhez a tevékenységhez. |
| várj | Megvárja, amíg ez a feladat eléri a terminálállapotot. A wait inline végrehajtható, ha az összes feladatfüggőség teljesül, és a háttérfolyamat még nem vette fel végrehajtásra. |
Nyilvános operátorok
| Név | Leírás |
|---|---|
| operator!= | Túlterhelt. Meghatározza, hogy két task objektum különböző belső feladatokat jelöl-e. |
| operátor= | Túlterhelt. Az egyik task objektum tartalmát lecseréli egy másikra. |
| operátor== | Túlterhelt. Meghatározza, hogy két task objektum ugyanazt a belső feladatot képviseli-e. |
Megjegyzések
További információ: Feladat-párhuzamosság.
Öröklési hierarchia
task
Követelmények
Fejléc: ppltasks.h
névtér: egyidejűség
kap
A tevékenység által létrehozott eredményt adja vissza. Ha a feladat nincs terminálállapotban, egy get hívás megvárja, amíg a feladat befejeződik. Ez a metódus nem ad vissza értéket, amikor egy feladaton a result_type a void értékkel kerül meghívásra.
_ResultType get() const;
void get() const;
Visszaadott érték
A feladat eredménye.
Megjegyzések
Ha a feladat megszakad, a hívás gettask_canceled kivételt eredményez. Ha a feladat egy másik kivétellel találkozott, vagy egy előzményfeladatból kivételt továbbítottak rá, a get hívás ezt a kivételt fogja jelezni.
Fontos
Univerzális Windows-platform (UWP) alkalmazásokban ne hívja meg a concurrency::task::wait vagy get (wait hívás get) függvényt a felhasználói felületi szálon futó kódban. Máskülönben a futási környezet kiveti a concurrency::invalid_operation kivételt, mivel ezek a metódusok blokkolják az aktuális szálat, és az alkalmazás válaszképtelenné válhat. Meghívhatja azonban a get metódust, hogy megkapja az előzményfeladat eredményét egy tevékenységalapú folytatásban, mert az eredmény azonnal elérhető.
is_apartment_aware
Meghatározza, hogy a feladat feloldja-e a Windows futtatókörnyezet IAsyncInfo felületét, vagy egy ilyen feladatból származik-e.
bool is_apartment_aware() const;
Visszaadott érték
true ha a feladat felold egy IAsyncInfo interfészt, vagy egy ilyen feladatból származik, false ellenkező esetben.
feladat::is_done metódus (egyidejűségi futtatókörnyezet)
Meghatározza, hogy a tevékenység befejeződött-e.
bool is_done() const;
Visszaadott érték
Igaz, ha a tevékenység befejeződött, máskülönben hamis.
Megjegyzések
A függvény igaz értéket ad vissza, ha a feladat befejeződött vagy megszakítva (felhasználói kivétellel vagy anélkül).
operátor!=
Meghatározza, hogy két task objektum különböző belső feladatokat jelöl-e.
bool operator!= (const task<_ResultType>& _Rhs) const;
bool operator!= (const task<void>& _Rhs) const;
Paraméterek
_Rhs
Az összehasonlítandó feladat.
Visszaadott érték
true ha az objektumok különböző mögöttes tevékenységekre hivatkoznak, és false egyéb esetekben.
operátor=
Az egyik task objektum tartalmát lecseréli egy másikra.
task& operator= (const task& _Other);
task& operator= (task&& _Other);
Paraméterek
_Más
A forrás task objektum.
Visszaadott érték
Megjegyzések
Az task intelligens mutatóhoz hasonlóan, a másoló-hozzárendelés után ez az task objektum ugyanazt a tényleges feladatot képviseli, mint _Other.
operátor==
Meghatározza, hogy két task objektum ugyanazt a belső feladatot képviseli-e.
bool operator== (const task<_ResultType>& _Rhs) const;
bool operator== (const task<void>& _Rhs) const;
Paraméterek
_Rhs
Az összehasonlítandó feladat.
Visszaadott érték
true ha az objektumok ugyanarra a mögöttes tevékenységre hivatkoznak, és false egyéb esetben.
feladat::scheduler metódus (párhuzamos futtatókörnyezet)
A feladat ütemezőjét adja vissza
scheduler_ptr scheduler() const;
Visszaadott érték
Mutató az ütemezőhöz
feladat
Egy task objektumot hoz létre.
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);
Paraméterek
T
Annak a paraméternek a típusa, amelyből a feladatot létre kell venni.
_Param
Az a paraméter, amelyből a feladatot létre kell hozni. Ez lehet lambda, függvényobjektum, task_completion_event<result_type> objektum vagy Windows::Foundation::IAsyncInfo, ha feladatokat használ a Windows Futtatókörnyezet alkalmazásban. A lambda vagy függvényobjektum típusának egyenértékűnek kell lennie a std::function<X(void)> típussal, ahol az X lehet egy result_type változó, task<result_type>, vagy Windows::Foundation::IAsyncInfo a Windows Runtime alkalmazásokban.
_TaskOptions
A feladat opciói közé tartozik a lemondási token, az ütemező stb.
_Más
A forrás task objektum.
Megjegyzések
Az alapértelmezett konstruktor csak azért van jelen, hogy a task feladatokat tárolókban lehessen használni. Az alapértelmezett létrehozott tevékenység csak akkor használható, ha érvényes tevékenységet rendel hozzá. Az olyan metódusok, mint a get, wait vagy then dobják az invalid_argument kivételt, ha egy alapértelmezés szerint létrehozott feladatra alkalmazzák őket.
A task_completion_event-ből létrehozott feladat akkor fejeződik be (és ekkor ütemezik a folytatásokat), amikor beállítják a feladat befejezési eseményét.
A törlési jogkivonatot használó konstruktor verziója egy olyan feladatot hoz létre, amely a megszerzett jogkivonat használatával cancellation_token_source megszakítható. A lemondási jogkivonat nélkül létrehozott feladatok nem törölhetők.
Windows::Foundation::IAsyncInfo interfészből vagy lambda által létrehozott feladatok, ami egy IAsyncInfo interfészt ad vissza, elérik a terminálállapotukat, amikor a zárt Windows-futtatókörnyezet aszinkron művelete vagy cselekvése befejeződik. Hasonlóképpen, a lambdából létrehozott feladatok is elérik task<result_type> a terminálállapotukat, amikor a belső tevékenység eléri a terminálállapotát, és nem akkor, amikor a lambda visszatér.
task hasonlóan működik, mint egy intelligens mutató, és biztonságosan érték szerint továbbítható. Több szálon is elérhető zárolás nélkül.
A konstruktor túlterhelések, amelyek egy Windows::Foundation::IAsyncInfo interfészt fogadnak vagy egy ilyen interfészt visszaadó lambdát, csak a Windows Runtime alkalmazások számára érhetők el.
További információ: Feladat-párhuzamosság.
akkor
Hozzáad egy folytatási feladatot ehhez a tevékenységhez.
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;
Paraméterek
_Funkció
A feladat által meghívandó függvényobjektum típusa.
_Func
A feladat befejezésekor végrehajtandó folytatási függvény. A folytatási függvénynek egy result_type vagy task<result_type> típusú változót kell fogadnia bemenetként, ahol a result_type az a típus, amelyet ez a feladat állít elő.
_TaskOptions
A feladatopciók közé tartozik a lemondási token, az ütemező és a folytatási környezet. Alapértelmezés szerint a korábbi 3 beállítás öröklődik az előzményfeladattól
_CancellationToken
A folytatási feladathoz társított lemondási token. Egy törlési token nélkül létrehozott folytató feladat örökli az előzményfeladata tokenjét.
_ContinuationContext
Egy változó, amely meghatározza, hogy hol kell végrehajtani a folytatást. Ez a változó csak UWP-alkalmazásokban való használat esetén hasznos. További információ: task_continuation_context
Visszaadott érték
Az újonnan létrehozott folytatási feladat. A visszaadott tevékenység eredménytípusát a visszatérési _Func érték határozza meg.
Megjegyzések
A then azon túlterhelései, amelyek olyan lambdát vagy funktort fogadnak, amely egy Windows::Foundation::IAsyncInfo felületet ad vissza, csak a Windows futtatókörnyezeti alkalmazások számára érhetők el.
Az aszinkron munka feladat-folytatásainak használatával kapcsolatos további információkért tekintse meg a feladat-párhuzamosságot.
várj
Megvárja, amíg ez a feladat eléri a terminálállapotot. A wait inline végrehajtható, ha az összes feladatfüggőség teljesül, és a háttérfolyamat még nem vette fel végrehajtásra.
task_status wait() const;
Visszaadott érték
Olyan task_status érték, amely lehet completed vagy lehet canceled. Ha a feladat kivételt észlelt a végrehajtás során, vagy egy előzményfeladatból egy kivétel lett továbbítva hozzá, wait a kivételt fogja eldobni.
Megjegyzések
Fontos
Univerzális Windows-platform (UWP) alkalmazásokban ne hívjon meg wait olyan kódot, amely a felhasználói felület szálán fut. Ellenkező esetben a futtatókörnyezet concurrency::invalid_operation-t dob, mivel ez a módszer blokkolja az aktuális szálat, és az alkalmazás válaszképtelenné válhat. Azonban az concurrency::task::get metódus meghívásával megkaphatja az előzményfeladat eredményét egy feladat-alapú folytatásban.