TaskTree: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
m (Picture added)
No edit summary
 
(16 intermediate revisions by the same user not shown)
Line 2: Line 2:


==TaskTree - generic solution for automatic management of asynchronous tasks (C++)==
==TaskTree - generic solution for automatic management of asynchronous tasks (C++)==
TaskTree automatically manages a chain (or a tree) of asynchronous tasks of mixed types.
TaskTree automatically manages a chain (or a tree) of asynchronous tasks of mixed types, including running processes, network queries, functions in separate threads, animations, timers, and so on... It's easily extensible with any other types of asynchronous tasks.


The recipe on how to run and manage the conglomerate of tasks is described in a declarative way in C++.
The recipe on how to create, run and manage the conglomerate of tasks is described in a declarative way in C++.


The recipes are enclosed in copyable value-type objects and may be run many times, or be part of more general recipes.
The recipes are enclosed in copyable value-type objects and may be run many times, or be part of more general recipes.


The TaskTree is currently broadly used in QtCreator, for executing Build / Deploy configurations, Locator filter, Clang tool, Autotests, and much more...
The TaskTree is broadly used in QtCreator, for executing Build / Deploy configurations, Locator filter, Clang tool, Autotests, driving Axivion plugin's communication and much more...


The TaskTree's implementation is separated from the QtCreator specific code and may already serve as a general purpose solution outside of QtCreator.
The TaskTree's implementation is separated from the QtCreator specific code and may already serve as a general purpose solution outside of QtCreator.


Notes from the presentation/discussion at Qt Contributors Summit 2023: [[TaskTree CS23]]
Notes from the presentation/discussion at Qt Contributors Summit 2023: [[TaskTree CS23]]
Notes from the presentation/discussion at Qt Contributors Summit 2024: [[QtCS2024 TaskTree]]


== More Info ==
== More Info ==
Line 18: Line 20:
|-
|-
! Content !! Link || Additional Info
! Content !! Link || Additional Info
|-
| Presentation '24 || https://qt-wiki-uploads.s3.amazonaws.com/images/5/56/TaskTreePresentation.pdf
|-
|-
| Documentation || https://doc-snapshots.qt.io/qtcreator-extending/taskingsolution-module.html
| Documentation || https://doc-snapshots.qt.io/qtcreator-extending/taskingsolution-module.html
Line 26: Line 30:
|-
|-
| Demo || https://github.com/qt-creator/qt-creator/tree/master/tests/manual/tasking/demo
| Demo || https://github.com/qt-creator/qt-creator/tree/master/tests/manual/tasking/demo
|-
| AssetDownloader || https://codereview.qt-project.org/c/qt/qtbase/+/565933 || Patch replacing the old implementation of the asset downloader with TaskTree employed (TaskTree used in Qt 6.8 privately)
|-
|-
| ImageScaling || https://github.com/qt-creator/qt-creator/tree/master/tests/manual/tasking/imagescaling || An alternative implementation of https://doc.qt.io/qt-6/qtconcurrent-imagescaling-example.html using TaskTree
| ImageScaling || https://github.com/qt-creator/qt-creator/tree/master/tests/manual/tasking/imagescaling || An alternative implementation of https://doc.qt.io/qt-6/qtconcurrent-imagescaling-example.html using TaskTree
|-
|-
| ImageScaling diff || https://codereview.qt-project.org/c/qt-creator/qt-creator/+/481573 || Difference in the implementation of the ImageScaling example using QFuture::then() and TaskTree
| ImageScaling diff || https://codereview.qt-project.org/c/qt-creator/qt-creator/+/481573 || Difference in the implementation of the ImageScaling example using QFuture::then() and TaskTree
|-
| TrafficLight || https://github.com/qt-creator/qt-creator/tree/master/tests/manual/tasking/trafficlight || An alternative implementation of https://doc.qt.io/qt-6/qtscxml-trafficlight-widgets-static-example.html using TaskTree
|-
| DataExchange || https://github.com/qt-creator/qt-creator/tree/master/tests/manual/tasking/dataexchange || An example of a reusable TaskTree recipe
|-
|-
| Suggestions || https://bugreports.qt.io/browse/QTCREATORBUG-28741
| Suggestions || https://bugreports.qt.io/browse/QTCREATORBUG-28741
|-
| Making it public API||https://bugreports.qt.io/browse/QTBUG-131142<nowiki/>||Find it useful? Vote here 😀


|}
|}
[[File:TaskTree.jpg|thumb|The first public TaskTree presentation on Sep 28th 2023 at Felgo office, Vienna.]]
[[File:TaskTree.jpg|thumb|The first public TaskTree presentation on Sep 28th 2023 at Felgo office, Vienna.]]
[[File:Spyrosoft.jpeg|thumb|TaskTree presentation in Technopark Pomerania at the invitation of Spyrosoft on Oct 18th 2023.]]

Latest revision as of 17:08, 13 November 2024


TaskTree - generic solution for automatic management of asynchronous tasks (C++)

TaskTree automatically manages a chain (or a tree) of asynchronous tasks of mixed types, including running processes, network queries, functions in separate threads, animations, timers, and so on... It's easily extensible with any other types of asynchronous tasks.

The recipe on how to create, run and manage the conglomerate of tasks is described in a declarative way in C++.

The recipes are enclosed in copyable value-type objects and may be run many times, or be part of more general recipes.

The TaskTree is broadly used in QtCreator, for executing Build / Deploy configurations, Locator filter, Clang tool, Autotests, driving Axivion plugin's communication and much more...

The TaskTree's implementation is separated from the QtCreator specific code and may already serve as a general purpose solution outside of QtCreator.

Notes from the presentation/discussion at Qt Contributors Summit 2023: TaskTree CS23

Notes from the presentation/discussion at Qt Contributors Summit 2024: QtCS2024 TaskTree

More Info

Content Link Additional Info
Presentation '24 https://qt-wiki-uploads.s3.amazonaws.com/images/5/56/TaskTreePresentation.pdf
Documentation https://doc-snapshots.qt.io/qtcreator-extending/taskingsolution-module.html
Sources https://github.com/qt-creator/qt-creator/tree/master/src/libs/solutions/tasking
Autotests https://github.com/qt-creator/qt-creator/tree/master/tests/auto/solutions/tasking
Demo https://github.com/qt-creator/qt-creator/tree/master/tests/manual/tasking/demo
AssetDownloader https://codereview.qt-project.org/c/qt/qtbase/+/565933 Patch replacing the old implementation of the asset downloader with TaskTree employed (TaskTree used in Qt 6.8 privately)
ImageScaling https://github.com/qt-creator/qt-creator/tree/master/tests/manual/tasking/imagescaling An alternative implementation of https://doc.qt.io/qt-6/qtconcurrent-imagescaling-example.html using TaskTree
ImageScaling diff https://codereview.qt-project.org/c/qt-creator/qt-creator/+/481573 Difference in the implementation of the ImageScaling example using QFuture::then() and TaskTree
TrafficLight https://github.com/qt-creator/qt-creator/tree/master/tests/manual/tasking/trafficlight An alternative implementation of https://doc.qt.io/qt-6/qtscxml-trafficlight-widgets-static-example.html using TaskTree
DataExchange https://github.com/qt-creator/qt-creator/tree/master/tests/manual/tasking/dataexchange An example of a reusable TaskTree recipe
Suggestions https://bugreports.qt.io/browse/QTCREATORBUG-28741
Making it public API https://bugreports.qt.io/browse/QTBUG-131142 Find it useful? Vote here 😀
The first public TaskTree presentation on Sep 28th 2023 at Felgo office, Vienna.
TaskTree presentation in Technopark Pomerania at the invitation of Spyrosoft on Oct 18th 2023.