Megosztás a következőn keresztül:


feladatosztály (egyidejűségi futtatókörnyezet)

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.

Lásd még

egyidejű névtér