-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Expand file tree
/
Copy pathruntime.cpp
More file actions
39 lines (29 loc) · 821 Bytes
/
runtime.cpp
File metadata and controls
39 lines (29 loc) · 821 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// This program demonstrates how to use a runtime task to forcefully
// schedule an active task that would never be scheduled.
#include <taskflow/taskflow.hpp>
int main() {
tf::Taskflow taskflow("Runtime Tasking");
tf::Executor executor;
tf::Task A, B, C, D;
std::tie(A, B, C, D) = taskflow.emplace(
[] () { return 0; },
[&C] (tf::Runtime& rt) { // C must be captured by reference
std::cout << "B\n";
rt.schedule(C);
},
[] () { std::cout << "C\n"; },
[] () { std::cout << "D\n"; }
);
// name tasks
A.name("A");
B.name("B");
C.name("C");
D.name("D");
// create conditional dependencies
A.precede(B, C, D);
// dump the graph structure
taskflow.dump(std::cout);
// we will see both B and C in the output
executor.run(taskflow).wait();
return 0;
}