Na ovoj stranici

Tasking::GroupItem Class

class Tasking::GroupItem

GroupItem predstavlja osnovni element koji može biti dio bilo koje grupe. Više...

Header: #include <solutions/tasking/tasktree.h>
Inherited By:

Tasking::ExecutableItem

Napomena: Sve funkcije u ovoj klasi su reentrantne.

Javne vrste

Javne funkcije

GroupItem(const Tasking::GroupItems &items)
GroupItem(const Tasking::Storage<StorageStruct> &storage)

Detaljan opis

GroupItem je osnovni element koji može biti dio bilo kojeg Group-a. Obuhvaća funkcionalnost koju pruža bilo koja podklasa GroupItem-a. To je tip s vrijednošću i sigurno je kopirati instancu GroupItem-a, čak i kada je izvorno stvorena putem konstruktora podklase.

Postoje četiri glavne vrste GroupItem-a:

Vrsta GroupItem-aKratki opis
CustomTaskDefinira tip asinkrone zadatke te rukovatelje za početak, dovršetak i pogrešku zadatka. Označen je jedinstvenim imenom zadatka, kao što su ConcurrentCallTask<ResultType> ili NetworkQueryTask. Asinkroni zadaci glavni su razlog za korištenje stabla zadataka.
GroupKontejner za ostale stavke grupe. Budući da je grupa tipa GroupItem, moguće ju je ugnijezditi unutar druge grupe. Roditeljsku grupu roditelj vidi kao jednu asinhronu zadatku.
GroupItem koji sadrži StorageOmogućuje podzadaćama grupe razmjenu podataka. Kada se GroupItem koji sadrži Storage postavi unutar grupe, stablo zadataka instancira objekt podataka spremišta neposredno prije ulaska u grupu i uništava ga neposredno nakon izlaska iz grupe.
Ostali elementi za kontrolu grupeElementi vraćeni metodama parallelLimit() ili workflowPolicy() utječu na ponašanje grupe. Elementi vraćeni metodama onGroupSetup() ili onGroupDone() definiraju prilagođene rukovatelje koji se pozivaju kada grupa započne ili završi izvršavanje.

Dokumentacija o vrstama članova

[alias] GroupItem::GroupDoneHandler

Nadimak tipa za std::function<DoneResult(DoneWith)> ili DoneResult.

GroupDoneHandler je argument elementa onGroupDone(). Bilo koja funkcija s gore navedenim potpisom, kada se proslijedi kao rukovatelj završetka grupe, bit će pozvana tijekom izvođenja stabla zadataka kada izvršenje grupe završi.

Argument DoneWith je neobavezan i vaš handler done ga može izostaviti. Kada je naveden, sadrži informacije o konačnom rezultatu grupe koji će biti prijavljen njezinu roditelju.

Vraćena vrijednost DoneResult je neobavezna i vaš handler može umjesto toga vratiti void. U tom slučaju konačni rezultat grupe bit će jednak vrijednosti navedenoj u argumentu DoneWith. Kada handler vrati vrijednost DoneResult, konačni rezultat grupe može se prilagoditi unutar tijela handlera pomoću vraćene vrijednosti.

Za GroupDoneHandler tipa DoneResult ne izvršava se nikakva dodatna obrada i grupa se bezuvjetno završava vrijednošću proslijeđenom argumentom DoneResult, zanemarujući pravilo tijeka rada grupe.

Vidi također onGroupDone(), GroupSetupHandler i CustomTask::TaskDoneHandler.

[alias] GroupItem::GroupSetupHandler

Nadimak tipa za std::function<SetupResult()>.

GroupSetupHandler je argument elementa onGroupSetup(). Bilo koja funkcija s gore navedenim potpisom, kada se proslijedi kao rukovatelj postavljanja grupe, bit će pozvana stablom zadataka u tijeku izvršavanja kada započne izvršavanje grupe.

Vraćena vrijednost rukovatelja upućuje grupu koja se izvršava kako postupiti nakon završetka poziva rukovatelja. Zadana vraćena vrijednost SetupResult::Continue -a upućuje grupu da nastavi s izvršavanjem, odnosno da započne izvršavati svoje podređene zadatke. Vraćena vrijednost SetupResult::StopWithSuccess -a ili SetupResult::StopWithError -a upućuje grupu da preskoči izvršavanje podređenih zadataka i odmah završi uspješno, odnosno s pogreškom.

Kada je tip povrata SetupResult::StopWithSuccess ili SetupResult::StopWithError, handler grupe za završetak (ako je naveden) poziva se sinkrono odmah nakon toga.

Napomena: Čak i ako handler za postavljanje grupe vrati StopWithSuccess ili StopWithError, poziva se handler za završetak grupe. Ovo se ponašanje razlikuje od ponašanja handlera za završetak zadatka i može se promijeniti u budućnosti.

Element onGroupSetup() prihvaća i funkcije u skraćenom obliku std::function<void()>, tj. vrijednost povrata je void. U tom se slučaju pretpostavlja da je vrijednost povrata SetupResult::Continue.

Vidi također onGroupSetup(), GroupDoneHandler i CustomTask::TaskSetupHandler.

Dokumentacija funkcija članova

GroupItem::GroupItem(const Tasking::GroupItems &items)

Konstruira element GroupItem s danim popisom items.

Kada se ovaj element GroupItem analizira u TaskTree-u, jednostavno se zamijeni svojim items-om.

Ovaj konstruktor je koristan pri izgradnji Group elementa s popisima GroupItem elemenata:

static QList<GroupItems> getItems();

...

const Group root {
    parallel,
    finishAllAndSuccess,
    getItems(), // OK, getItems() list is wrapped into a single GroupItem element
    onGroupSetup(...),
    onGroupDone(...)
};

Ako želite stvoriti poddrvo, upotrijebite Group.

Napomena: Nemojte miješati ovaj GroupItem s elementom Group, jer Group zadržava svoje dijelove ugniježđene nakon što ih obradi stablo zadataka, dok ovaj GroupItem to ne čini.

Vidi također Group.

template <typename StorageStruct> GroupItem::GroupItem(const Tasking::Storage<StorageStruct> &storage)

Konstruira element GroupItem koji sadrži objekt storage.

Kada se tijekom izvođenja stabla zadataka uđe u element Group koji sadrži ovaj GroupItem, dinamički se stvara instanca objekta StorageStruct.

Kada se ta grupa sprema napustiti nakon izvršenja, prethodno instancirani StorageStruct se briše.

Dinamički stvorena instanca objekta StorageStruct dostupna je unutar bilo kojeg tijela rukovatelja roditeljskog elementa Group, uključujući ugniježđene grupe i njihove zadatke, putem metode Storage::operator->(), Storage::operator*() ili Storage::activeStorage().

Vidi također Storage.

Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.