静态图,由程序自己定义的并行结构,并且无法从正在运行的依赖关系图中产生新Task
创建一个依赖关系图
Task: 可被调用的对象, 即能够被std::invoke 调用,比如函数,lambda表达式,重载了operator() 的 class, bind的返回值。
Taskflow 提供 tf::Taskflow::placeholder 和 tf::Taskflow::emplace 来创建一个Task。
tf::Taskflow taskflow; // 创建一个taskflow流图对象
tf::Task taskA = taskflow.placeholder(); // 创建一个task占位符
tf::Task taskB = taskflow.emplace([] () {
}); // 根据一个可调用对象创建一个task
// 结构化绑定,创建三个Task(通过std::tuple)
auto [D, E, F] = taskflow.emplace(
[](){
std::cout << "Task A\n"; },
[](){
std::cout << "Task B\n"; },
[](){
std::cout << "Task C\n"; }
);
task本身也包含很多方法:
#include <taskflow/taskflow.hpp>
int main() {
tf::Taskflow taskflow;
tf::Task A = taskflow.emplace