QtTaskTree::ForeverIterator Class
class QtTaskTree::ForeverIteratorInfinite iterator to be used inside For element. More...
| Header: | #include <qtasktree.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS TaskTree)target_link_libraries(mytarget PRIVATE Qt6::TaskTree) |
| qmake: | QT += tasktree |
| Since: | Qt 6.11 |
| Inherits: | QtTaskTree::Iterator |
| Status: | Technical Preview |
Note: All functions in this class are reentrant.
Public Functions
Detailed Description
See also Iterator, RepeatIterator, UntilIterator, and ListIterator.
Member Function Documentation
ForeverIterator::ForeverIterator()
Constructs never ending iterator for the For (ForeverIterator()) >> Do {} construct.
Note: Be very careful if your Do body specifies parallel mode - in this case the QTaskTree may instantiate infinite number of tasks.
Example usage:
static const int maxNumber = 10; const int luckyNumber = QRandomGenerator().global()->bounded(maxNumber); qDebug() << "Today's lucky number is:" << luckyNumber; qDebug() << "Let's start the drawing..."; const auto onNumberCheck = [luckyNumber] { const int drawnNumber = QRandomGenerator().global()->bounded(maxNumber); qDebug() << "You have drawn:" << drawnNumber; bool won = drawnNumber == luckyNumber; if (won) qDebug() << "You have won! Congratulations!"; return won; }; const Group recipe = For (ForeverIterator()) >> Do { stopOnSuccess, timeoutTask(1s), QSyncTask(onNumberCheck) };
The possible output when the recipe is started by the QTaskTree:
Today's lucky number is: 8 Let's start the drawing... You have drawn: 2 You have drawn: 2 You have drawn: 6 You have drawn: 7 You have drawn: 9 You have drawn: 8 You have won! Congratulations!