|
3 | 3 | // TaskA---->TaskB---->TaskD |
4 | 4 | // TaskA---->TaskC---->TaskD |
5 | 5 |
|
6 | | -#include <taskflow.hpp> // the only include you need |
| 6 | +#include <taskflow/taskflow.hpp> // the only include you need |
7 | 7 |
|
8 | 8 | int main(){ |
9 | 9 |
|
10 | 10 | tf::Taskflow tf(std::thread::hardware_concurrency()); |
11 | 11 |
|
12 | | - auto [A, B, C, D] = tf.silent_emplace( |
13 | | - [] () { std::cout << "TaskA\n"; }, // the taskflow graph |
14 | | - [] () { std::cout << "TaskB\n"; }, // |
15 | | - [] () { std::cout << "TaskC\n"; }, // +---+ |
16 | | - [] () { std::cout << "TaskD\n"; } // +---->| B |-----+ |
17 | | - ); // | +---+ | |
18 | | - // +---+ +-v-+ |
19 | | - A.precede(B); // B runs after A // | A | | D | |
20 | | - A.precede(C); // C runs after A // +---+ +-^-+ |
21 | | - B.precede(D); // D runs after B // | +---+ | |
22 | | - C.precede(D); // D runs after C // +---->| C |-----+ |
23 | | - // +---+ |
24 | | - |
25 | | - std::cout << tf.dump(); |
26 | | - |
| 12 | + auto [A, B, C, D] = tf.silent_emplace( // the taskflow graph |
| 13 | + [] () { std::cout << "TaskA\n"; }, // |
| 14 | + [] () { std::cout << "TaskB\n"; }, // +---+ |
| 15 | + [] () { std::cout << "TaskC\n"; }, // +---->| B |-----+ |
| 16 | + [] () { std::cout << "TaskD\n"; } // | +---+ | |
| 17 | + ); // +---+ +-v-+ |
| 18 | + // | A | | D | |
| 19 | + A.precede(B); // B runs after A // +---+ +-^-+ |
| 20 | + A.precede(C); // C runs after A // | +---+ | |
| 21 | + B.precede(D); // D runs after B // +---->| C |-----+ |
| 22 | + C.precede(D); // D runs after C // +---+ |
| 23 | + |
27 | 24 | tf.wait_for_all(); // block until finished |
28 | 25 |
|
29 | 26 | return 0; |
|
0 commit comments