Auf dieser Seite

QtTaskTree::Do Class

class QtTaskTree::Do

Ein Body-Element, das mit For- und When-Konstrukten verwendet wird. Mehr...

Kopfzeile: #include <qtasktree.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS TaskTree)
target_link_libraries(mytarget PRIVATE Qt6::TaskTree)
qmake: QT += tasktree
Seit: Qt 6.11

Hinweis: Alle Funktionen in dieser Klasse sind reentrant.

Öffentliche Funktionen

Do(const QtTaskTree::GroupItems &children)
Do(std::initializer_list<QtTaskTree::GroupItem> children)

Detaillierte Beschreibung

Ein Body-Element, das eine Liste von Tasks enthält, die bei jeder For -Iteration oder nach dem Vorrücken der Barriere von When ausgeführt werden.

For (RepeatIterator(5)) >> Do {
    task1,
    task2
};

Im Falle einer For-Schleife wird der Körper von Do mehrfach ausgeführt. Wenn die Handler onGroupSetup() oder onGroupDone() Teil der an den Konstruktor von Do übergebenen Kinder sind, werden sie nur einmal ausgeführt - bevor die gesamte Schleife beginnt und nachdem die gesamte Schleife beendet ist:

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)
};

Das obige Rezept wird, wenn es ausgeführt wird, ausgegeben:

Setup
Current iteration: 0
Current iteration: 1
Current iteration: 2
Done

Wenn die Absicht besteht, Gruppenhandler bei jeder Iteration aufzurufen, schließen Sie den Do-Körper mit einem zusätzlichen Group ein:

const Group recipe = For (iterator) >> Do {
    Group {
        onGroupSetup(onSetup),
        QSyncTask(onSync),
        onDone(onDone)
    }
};

Das letztgenannte Rezept wird, wenn es ausgeführt wird, Folgendes ausgeben:

Setup
Current iteration: 0
Done
Setup
Current iteration: 1
Done
Setup
Current iteration: 2
Done

Ähnliches geschieht, wenn die Storage als direktes Kind des Bodys übergeben wird. Die Speicherstruktur wird nur einmal instanziiert, bevor die gesamte Schleife beginnt, und sie wird zerstört, sobald die gesamte Schleife beendet ist. Wenn Sie für jede Iteration eine eigene Instanz von Storage haben möchten, umschließen Sie den Do-Body mit einem zusätzlichen Group.

Seien Sie vorsichtig mit der Platzierung des Elements parallel im Do-Körper der For -Schleife, da alle Iterationen parallel starten werden. Dies ist möglicherweise nicht erwünscht, insbesondere im Fall von ForeverIterator.

Siehe auch For und When.

Dokumentation der Mitgliedsfunktionen

[explicit] Do::Do(const QtTaskTree::GroupItems &children)

Konstruiert einen Do-Body mit children, der bei jeder Iteration von For oder nach dem Vorrücken der Barriere von When ausgeführt wird.

[explicit] Do::Do(std::initializer_list<QtTaskTree::GroupItem> children)

Konstruiert einen Do-Body mit children, der als Initialisierungsliste übergeben wird.

Dies ist eine überladene Funktion.

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