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.
Az task_group osztály párhuzamos munkagyűjteményt jelöl, amely várakozhat vagy megszakítható.
Szemantika
class task_group;
Tagok
Nyilvános konstruktorok
| Név | Description |
|---|---|
| task_group | Túlterhelt. Új task_group objektumot hoz létre. |
| ~task_group Destruktor | Elpusztít egy objektumot task_group . A destruktor végrehajtása előtt az objektum vagy a wait-t, vagy a run_and_wait-t metódust kell meghívni, kivéve, ha a destruktor egy kivétel miatti verem visszatekerés eredményeként fut le. |
Nyilvános módszerek
| Név | Description |
|---|---|
| lemondása | Minden tőle telhetőt megtesz, hogy megszüntesse a feladatcsoportban gyökerező munka részfáját. Ha lehetséges, a tevékenységcsoportban ütemezett összes tevékenység tranzitív módon lesz megszakítva. |
| törlése folyamatban | Tájékoztatja a hívót, hogy a feladatcsoport jelenleg éppen törlés alatt áll-e. Ez nem feltétlenül jelenti azt, hogy meghívták a cancel metódust az task_group objektumon (bár ez minden bizonnyal alkalmassá teszi a metódust a true visszaadására). Előfordulhat, hogy az task_group objektum beágyazott végrehajtást végez, és a munkafában feljebb lévő feladatcsoportot törölték. Ilyen esetekben, amikor a futtatókörnyezet előre meg tudja határozni, hogy a lemondás keresztülmegy ezen az task_group objektumon, az true is visszaadódik. |
| fut | Túlterhelt. Feladat ütemezése az task_group objektumon. Ha egy task_handle objektumot paraméterként runad át, a hívó felelős az task_handle objektum élettartamának kezeléséért. Annak a metódusnak a verziója, amely paraméterként hivatkozik egy függvényobjektumra, a futtatókörnyezeten belüli halomfoglalást foglalja magában, amely kevésbé teljesíthető, mint az objektumra hivatkozó task_handle verzió használata. A paramétert _Placement használó verzió miatt a feladat elfogult a paraméter által megadott helyen történő végrehajtással szemben. |
| futtatás_és_várakozás | Túlterhelt. Ütemez úgy egy feladatot, hogy az a hívókörnyezetben, beágyazottan fusson, az task_group objektum segítségével a teljes lemondási támogatás érdekében. A függvény ezután megvárja, amíg az task_group objektumon végzett összes munka befejeződött vagy megszakadt. Ha egy task_handle objektumot paraméterként run_and_waitad át, a hívó felelős az task_handle objektum élettartamának kezeléséért. |
| várj | Megvárja, amíg az task_group objektumon végzett összes munka befejeződik vagy törlésre kerül. |
Megjegyzések
A szigorúan korlátozott structured_task_group osztálytól eltérően az task_group osztály sokkal általánosabb szerkezet. Nem rendelkezik a structured_task_group által leírt korlátozásokkal.
task_group az objektumok biztonságosan használhatók a szálak között, és szabadon felhasználhatók. A task_group szerkezet hátránya, hogy kis feladatok esetében nem teljesít olyan jól, mint a structured_task_group szerkezet.
További információ: Feladat-párhuzamosság.
Öröklési hierarchia
task_group
Requirements
Fejléc: ppl.h
Névtér: egyidejűség
cancel
Minden tőle telhetőt megtesz, hogy megszüntesse a feladatcsoportban gyökerező munka részfáját. Ha lehetséges, a tevékenységcsoportban ütemezett összes tevékenység tranzitív módon lesz megszakítva.
void cancel();
Megjegyzések
További információ: Lemondási.
lemondás alatt van
Tájékoztatja a hívót, hogy a feladatcsoport jelenleg éppen törlés alatt áll-e. Ez nem feltétlenül jelenti azt, hogy meghívták a cancel metódust az task_group objektumon (bár ez minden bizonnyal alkalmassá teszi a metódust a true visszaadására). Előfordulhat, hogy az task_group objektum beágyazott végrehajtást végez, és a munkafában feljebb lévő feladatcsoportot törölték. Ilyen esetekben, amikor a futtatókörnyezet előre meg tudja határozni, hogy a lemondás keresztülmegy ezen az task_group objektumon, az true is visszaadódik.
bool is_canceling();
Visszaadott érték
Annak jelzése, hogy az task_group objektum megszakítás alatt áll-e (vagy hamarosan garantáltan meg fog szakadni).
Megjegyzések
További információ: Lemondási.
futtat
Feladat ütemezése az task_group objektumon. Ha egy task_handle objektumot paraméterként runad át, a hívó felelős az task_handle objektum élettartamának kezeléséért. Annak a metódusnak a verziója, amely paraméterként hivatkozik egy függvényobjektumra, a futtatókörnyezeten belüli halomfoglalást foglalja magában, amely kevésbé teljesíthető, mint az objektumra hivatkozó task_handle verzió használata. A paramétert _Placement használó verzió miatt a feladat elfogult a paraméter által megadott helyen történő végrehajtással szemben.
template<
typename _Function
>
void run(
const _Function& _Func
);
template<
typename _Function
>
void run(
const _Function& _Func,
location& _Placement
);
template<
typename _Function
>
void run(
task_handle<_Function>& _Task_handle
);
template<
typename _Function
>
void run(
task_handle<_Function>& _Task_handle,
location& _Placement
);
Paraméterek
_Funkció
A feladatkezelő törzsének végrehajtásához meghívandó függvényobjektum típusa.
_Func
Egy függvény, amelyet a feladat törzsének meghívására használnak. Ez lehet lambda kifejezés vagy más objektum, amely támogatja a függvényhívási operátor egy verzióját az aláírással void operator()().
_Elhelyezés
Hivatkozás arra a helyre, ahol a paraméter által képviselt feladatnak végre kell hajtania _Func .
_Task_handle
Az ütemezett munkára való hivatkozás. Vegye figyelembe, hogy az objektum élettartamáért a hívó felel. A futtatókörnyezet továbbra is várni fogja, hogy ez az task_group objektum életben maradjon, amíg meg nem hívják rajta a wait vagy run_and_wait metódust.
Megjegyzések
A futtatókörnyezet ütemezi a megadott munkafüggvényt, hogy egy későbbi időpontban fusson; ez lehetséges a hívó függvény visszatérése után is. Ez a metódus egy task_handle objektumot használ a megadott munkafüggvény másolatának tárolására. Ezért a metódusnak átadott függvényobjektumokban bekövetkező állapotváltozások nem jelennek meg a függvényobjektum másolatában. Emellett győződjön meg arról, hogy az egérmutatóval vagy a munkafüggvényre való hivatkozással átadott objektumok élettartama érvényes marad mindaddig, amíg a munkafüggvény vissza nem tér.
Ha a task_group objektum egy kivétel miatti veremvisszatekerés eredményeként szűnik meg, akkor nem szükséges garantálnia, hogy a hívás megtörtént a wait vagy run_and_wait metódusra. Ebben az esetben a destruktor megfelelően megszakítja a feladatot, és megvárja, amíg a _Task_handle paraméter által képviselt feladat befejeződik.
A metódus invalid_multiple_scheduling kivételt eredményez, ha a paraméter által _Task_handle megadott feladatkezelőt már ütemezték egy tevékenységcsoport-objektumra a run metóduson keresztül, és nem történt beavatkozó hívás sem az wait adott tevékenységcsoporthoz, sem run_and_wait a metódushoz.
futtatás_és_várakozás
Ütemez úgy egy feladatot, hogy az a hívókörnyezetben, beágyazottan fusson, az task_group objektum segítségével a teljes lemondási támogatás érdekében. A függvény ezután megvárja, amíg az task_group objektumon végzett összes munka befejeződött vagy megszakadt. Ha egy task_handle objektumot paraméterként run_and_waitad át, a hívó felelős az task_handle objektum élettartamának kezeléséért.
template<
class _Function
>
task_group_status run_and_wait(
task_handle<_Function>& _Task_handle
);
template<
class _Function
>
task_group_status run_and_wait(
const _Function& _Func
);
Paraméterek
_Funkció
A feladat törzsének végrehajtásához meghívandó függvényobjektum típusa.
_Task_handle
A feladat leírója, amelyet a hívó környezet beágyazottan fog futtatni. Vegye figyelembe, hogy az objektum élettartamáért a hívó felel. A futtatókörnyezet azt várja, hogy a run_and_wait a metódus végrehajtásának befejezéséig éljen.
_Func
Egy függvény, amely a feladat törzsének meghívására kerül. Ez lehet lambda kifejezés vagy más objektum, amely támogatja a függvényhívási operátor egy verzióját az aláírással void operator()().
Visszaadott érték
Annak jelzése, hogy a várakozás teljesült-e, vagy a tevékenységcsoport megszakadt egy explicit lemondási művelet vagy egy kivétel miatt, amely az egyik tevékenységéből származik. További információ: task_group_status.
Megjegyzések
Vegye figyelembe, hogy az objektumra task_group ütemezett feladatok közül legalább egy a hívókörnyezetben is végrehajthat beágyazott műveleteket.
Ha az objektumra task_group ütemezett feladatok közül legalább egy kivételt jelez, a futtatókörnyezet kiválaszt egy ilyen kivételt, és propagálja azt a run_and_wait metódus hívásából.
Amikor visszatér a run_and_wait metódusból egy task_group objektum esetében, a futtatókörnyezet visszaállítja az objektumot egy tiszta állapotba, hogy újra felhasználható legyen. Ide tartozik az az eset, amikor az task_group objektumot megszakították.
A nem kivételes végrehajtási útvonalon köteles meghívni vagy ezt a metódust, vagy a wait metódust, mielőtt a task_group destruktora lefutna.
feladat_csoport
Új task_group objektumot hoz létre.
task_group();
task_group(
cancellation_token _CancellationToken
);
Paraméterek
_CancellationToken
A feladatcsoporthoz társítandó lemondási token. A tevékenységcsoport megszűnik, amikor a token érvénytelenítése megtörténik.
Megjegyzések
A lemondási tokent használó konstruktor létrehoz egy task_group-t, amelyet a tokenhez társított forrás lemondásakor törölnek. Ha explicit lemondási tokent ad meg, az elkülöníti ezt a feladatcsoportot attól, hogy részvételt vegyen egy olyan implicit lemondásban, amelyet egy másik tokent használó vagy token nélküli szülőcsoport kezdeményez.
~task_group
Elpusztít egy objektumot task_group . A destruktor végrehajtása előtt az objektum vagy a wait-t, vagy a run_and_wait-t metódust kell meghívni, kivéve, ha a destruktor egy kivétel miatti verem visszatekerés eredményeként fut le.
~task_group();
Megjegyzések
Ha a destruktor normál végrehajtás eredményeként fut (például kivétel miatt nem halmozódik fel a verem), és sem a waitrun_and_wait metódusokat nem hívták meg, a destruktor missing_wait kivételt okozhat.
wait
Megvárja, amíg az task_group objektumon végzett összes munka befejeződik vagy törlésre kerül.
task_group_status wait();
Visszaadott érték
Annak jelzése, hogy a várakozás kielégítésre került-e, vagy a feladatcsoport törölve lett egy explicit lemondási operáció vagy egy kivétel miatt, amely az egyik feladatából származik. További információ: task_group_status.
Megjegyzések
Vegye figyelembe, hogy az objektumra task_group ütemezett feladatok közül legalább egy a hívókörnyezetben is végrehajthat beágyazott műveleteket.
Ha az objektumra task_group ütemezett feladatok közül legalább egy kivételt jelez, a futtatókörnyezet kiválaszt egy ilyen kivételt, és propagálja azt a wait metódus hívásából.
Egy wait objektum meghívása task_group tiszta állapotba állítja vissza, ahol újra felhasználható. Ide tartozik az az eset, amikor az task_group objektumot megszakították.
A nem kivételes végrehajtási útvonalon köteles meghívni vagy ezt a metódust, vagy a run_and_wait metódust, mielőtt a task_group destruktora lefutna.
Lásd még
egyidejű névtér
structured_task_group osztály
task_handle osztály