![]() |
Taskflow
3.2.0-Master-Branch
|
Taskflow allows you to interact with the scheduling runtime from the execution context of a runtime task. Runtime tasking is mostly used for designing specialized parallel algorithms that go beyond the default scheduling rules of taskflows.
A runtime task is a callable that takes a reference to a tf::Runtime object in its argument. A tf::Runtime object is created by the running executor and contains several methods for users to interact with the scheduling runtime. For instance, the following code creates a runtime task to forcefully schedule a conditioned task that would never happens:
When the condition task A completes and returns 0, the scheduler moves on to the runtime task B. Under the normal circumstance, tasks C and D will not run because their conditional dependencies never happen. This can be broken by forcefully scheduling C or/and D via a runtime task that resides in the same graph. Here, the runtime task B call tf::Runtime::schedule(tf::Task) to run task C even though the weak dependency between A and C will never happen based on the graph structure itself. As a result, we will see both B and C in the output:
You can acquire the reference to the running executor using tf::Runtime::executor(). The running executor of a runtime task is the executor that runs the parent taskflow of that runtime task.