QtTaskTree::Do Class
class QtTaskTree::DoUn élément de corps utilisé avec les constructions For et When. Plus...
| En-tête : | #include <qtasktree.h> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS TaskTree)target_link_libraries(mytarget PRIVATE Qt6::TaskTree) |
| qmake : | QT += tasktree |
| Depuis : | Qt 6.11 |
Note : Toutes les fonctions de cette classe sont réentrantes.
Fonctions publiques
| Do(const QtTaskTree::GroupItems &children) | |
| Do(std::initializer_list<QtTaskTree::GroupItem> children) |
Description détaillée
Un élément de corps, contenant une liste de tâches à exécuter à chaque itération de For ou après que la barrière de When a été avancée.
For (RepeatIterator(5)) >> Do { task1, task2 };
Dans le cas d'une boucle For, le corps du Do sera exécuté plusieurs fois. Si les gestionnaires onGroupSetup() ou onGroupDone() font partie des enfants passés au constructeur de Do, ils ne seront exécutés qu'une seule fois - avant que la boucle entière ne commence, et après que la boucle entière soit terminée :
const RepeatIterator iterator(3); const auto onSetup = [] { qDebug() << "Setup"; }; const auto onSync = [iterator] { qDebug() << "Current iteration:" << iterator->iteration(); }; const auto onDone = [] { qDebug() << "Done"; }; const Group recipe = For (iterator) >> Do { onGroupSetup(onSetup), QSyncTask(onSync), onDone(onDone) };
La recette ci-dessus, une fois exécutée, produira un résultat :
Setup Current iteration: 0 Current iteration: 1 Current iteration: 2 Done
Si l'intention est d'invoquer des gestionnaires de groupe à chaque itération, entourez le corps de Do d'un Group supplémentaire, comme :
const Group recipe = For (iterator) >> Do { Group { onGroupSetup(onSetup), QSyncTask(onSync), onDone(onDone) } };
Cette dernière recette, une fois exécutée, produira un résultat :
Setup Current iteration: 0 Done Setup Current iteration: 1 Done Setup Current iteration: 2 Done
La même chose se produit lorsque le Storage est passé en tant qu'enfant direct du corps. La structure de stockage n'est instanciée qu'une seule fois, avant le début de la boucle, et est détruite juste après la fin de la boucle. Si l'intention est d'avoir une instance distincte de Storage pour chaque itération, entourez le corps de Do d'un Group supplémentaire.
Soyez prudent lorsque vous placez l'élément parallel dans le corps du Do de la boucle For, car toutes les itérations commenceront en parallèle. Cela peut ne pas être souhaitable, en particulier dans le cas de ForeverIterator.
Documentation sur les fonctions membres
[explicit] Do::Do(const QtTaskTree::GroupItems &children)
Construit un corps Do avec children à exécuter à chaque itération de For ou après que la barrière de When a été avancée.
[explicit] Do::Do(std::initializer_list<QtTaskTree::GroupItem> children)
Construit un corps Do avec children transmis comme liste d'initialisation.
Il s'agit d'une fonction surchargée.
© 2026 The Qt Company Ltd. 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.