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. 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.

Lásd még

egyidejű névtér