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. A sikeres befejezéskor a típus _ResultType eredménye lesz. A típusfeladatok task<void> nem eredményeznek eredményt. A tevékenységek más tevékenységektől függetlenül várakozhatnak és megszakíthatók. Más feladatokkal is összeállítható folytatások(then) és illeszté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 typedefs
| 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 metódusok
| Név | Leírás |
|---|---|
| szerezze meg | Túlterhelt. A tevékenység által létrehozott eredményt adja vissza. Ha a tevékenység nincs terminálállapotban, egy hívás get megvárja, amíg a tevékenység befejeződik. Ez a metódus nem ad vissza értéket, ha egy adott tevékenységhez az egyiket result_typevoidhívja meg. |
| is_apartment_aware | Meghatározza, hogy a tevékenység feloldja-e a Windows futtatókörnyezet IAsyncInfo felületét, vagy egy ilyen tevékenységből származik-e. |
| is_done | 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 tevékenység inline végrehajtása akkor lehetséges wait , ha az összes tevékenységfüggőség teljesül, és a háttérmunkatárs még nem vette fel végrehajtásra. |
Nyilvános operátorok
| Név | Leírás |
|---|---|
| operátor!= | 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 tevékenység nincs terminálállapotban, egy hívás get megvárja, amíg a tevékenység befejeződik. Ez a metódus nem ad vissza értéket, ha egy adott tevékenységhez az egyiket result_typevoidhívja meg.
_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 tevékenység egy másik kivételt észlelt, vagy egy előzményfeladatból egy kivételt propagált, a hívás get ezt a kivételt fogja jelezni.
Fontos
Univerzális Windows-platform (UWP) alkalmazásokban ne hívjon egyidejűséget::task::wait vagy get (wait calls get) a felhasználói felületi szálon futó kódban. Ellenkező esetben a futtatókörnyezet egyidejűséget okoz::invalid_operation mivel ezek a metódusok blokkolják az aktuális szálat, és az alkalmazás nem válaszol. 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 tevékenység feloldja-e a Windows futtatókörnyezet IAsyncInfo felületét, vagy egy ilyen tevékenységből származik-e.
bool is_apartment_aware() const;
Visszaadott érték
true ha a tevékenység felold egy IAsyncInfo interfészt, vagy egy ilyen tevékenységbő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ási hozzárendelés után ez task az objektum ugyanazt a tényleges feladatot jelöli, mint _Other a tényleges feladatot.
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 (egyidejűségi 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 std::function<X(void)>kell lennie, ahol az X típusváltozó result_typelehet, task<result_type>vagy Windows::Foundation::IAsyncInfo windowsos futtatókörnyezeti alkalmazásokban.
_TaskOptions
A feladat beállításai közé tartozik a lemondási jogkivonat, az ütemező stb.
_Más
A forrás task objektum.
Megjegyzések
Az alapértelmezett konstruktor csak azért van jelen, task hogy a tevékenységek tárolókban legyenek használva. 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 például geta waitthen vagy invalid_argument kivételt eredményeznek, ha egy alapértelmezett létrehozott tevékenységre kérik.
A tevékenység befejezési eseményének beállításakor az egy task_completion_event adott tevékenységből létrehozott tevékenység befejeződik (és a folytatások ütemezve vannak).
A lemondási jogkivonatot használó konstruktor verziója létrehoz egy feladatot, amely a jogkivonatból beszerzett jogkivonat használatával cancellation_token_source megszakítható. A lemondási jogkivonat nélkül létrehozott feladatok nem törölhetők.
Az interfészből vagy lambdából Windows::Foundation::IAsyncInfo létrehozott feladatok, amelyek egy IAsyncInfo interfészt ad vissza, elérik a terminálállapotukat, amikor a zárt Windows-futtatókörnyezet aszinkron művelete vagy művelete 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 úgy viselkedik, mint egy intelligens mutató, és biztonságosan áthalad érték szerint. Több szálon is elérhető zárolás nélkül.
A Konstruktor túlterheli a Windows::Foundation::IAsyncInfo interfészt vagy egy ilyen felületet visszatevő lambdát, csak a Windows futtatókörnyezeti alkalmazások számára érhető 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. Ennek a folytatási függvénynek bemenetként egy változót kell megadnia result_type , vagy task<result_type>azt, hogy hol result_type van a tevékenység által előállított eredmény típusa.
_TaskOptions
A tevékenységbeállítások közé tartozik a lemondási jogkivonat, 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 tevékenységhez társítandó lemondási jogkivonat. A lemondási jogkivonat nélkül létrehozott folytatási tevékenység örökli az előzményfeladat jogkivonatá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
Ennek túlterhelése then olyan lambdát vagy funktort vesz igénybe, amely egy Windows::Foundation::IAsyncInfo felületet ad vissza, csak a Windows futtatókörnyezeti alkalmazások számára érhető 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 tevékenység inline végrehajtása akkor lehetséges wait , ha az összes tevékenységfüggőség teljesül, és a háttérmunkatárs még nem vette fel végrehajtásra.
task_status wait() const;
Visszaadott érték
Olyan task_status érték, amely lehet vagy completedcanceled. Ha a tevékenység kivételt észlelt a végrehajtás során, vagy egy előzményfeladatból propagált egy kivételt, wait a kivételt a rendszer eldobja.
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 egyidejűséget eredményez::invalid_operation mivel ez a módszer blokkolja az aktuális szálat, és az alkalmazás nem válaszolhat. Az egyidejűség::task::get metódus meghívásával azonban megkaphatja az előzményfeladat eredményét egy tevékenységalapú folytatásban.