本文最后更新于:2024年5月7日 下午
Taskflow可以帮助您在现代 C + + 中快速编写并行和异构的任务程序 。
简介
Taskflow是一款 C++ 下任务流程框架,可以管理Pipeline并执行并行工作。Taskflow的流程管理有论文支撑,具有一定理论安全性。Taskflow可以帮助您快速编写具有高性能和同时高生产率的并行和异构任务程序。与许多现有的任务编程库相比,它更快、更具表现力、代码行更少、更容易进行插入式集成。- 当前(2023.1)最新版本
v3.5,7.7k stars - 官方网站:https://taskflow.github.io/
- Github 仓库:https://github.com/taskflow/taskflow
- 官方文档:https://taskflow.github.io/taskflow/index.html
下载使用
Taskflow使用需要源码
下载
Release
- 可以在仓库的 Release 中下载:https://github.com/taskflow/taskflow/releases/tag/v3.5.0
Clone Repository
-
也可以直接获取整个仓库:
1
git clone https://github.com/taskflow/taskflow -
下载仓库后切换到
v3.5.0版本1
git checkout v3.5.0
使用
-
使用时仅需引入源码目录中的
taskflow/taskflow.hpp即可 -
将
Taskflow源码目录添加到系统环境变量,在项目中添加引用目录,代码中直接include就可以使用了1
#include <taskflow/taskflow.hpp> // Taskflow is header-only -
命名空间叫
tf:1
using namespace tf;
C++环境
- 注意:
Taskflow需要 C++17 编译环境
g++
-
如果使用 g++ 需要在命令行添加参数
-std=c++17:1
g++ -std=c++17
Visual Studio
- 如果是在 Visual Studio 下需要开启 C++17 环境,需要在项目
属性->C/C++->语言->C++ 语言标准中修改:

入门用法
Demo
- 官网的 Demo 代码:
1 | |
- 输出:
1 | |
流程图
Taskflow可以输出代码运行拓扑图- 为了不让用户额外安装流程图绘制的工具,
Taskflow提供了解释流程图的网页工具 - 使用时,在代码中加入
taskflow.dump(std::cout);可以输出流程图代码
1 | |
- 上述代码输出:
1 | |
- 上述代码在 GraphViz 类工具中都可以识别为流程图
- 官方提供了访问流程图绘制工具网页:https://dreampuf.github.io/GraphvizOnline/
- 将代码粘贴到网页中,就可以看到流程图了

Profile
Taskflow还提供了 Profile 工具 (需要较高的Taskflow版本)- 使用时需要设置系统环境变量
TF_ENABLE_PROFILER指向一个 json 文件位置(路径可以相对、可以绝对)

- 这样在运行程序时会向目标位置输出 json 文件,类似:
1 | |
- 官方通用提供了这段信息的在线可视解析工具:https://taskflow.github.io/tfprof/
- 将 json 中内容粘贴到工具中即可看到运行 profile 信息

原始论文
《Taskflow:A Lightweight Parallel and Heterogeneous Task Graph Computing System》
参考资料
- https://github.com/taskflow/taskflow
- https://taskflow.github.io/taskflow/index.html
- https://dreampuf.github.io/GraphvizOnline/
- https://taskflow.github.io/tfprof/
- https://tsung-wei-huang.github.io/papers/tpds21-taskflow.pdf
文章链接:
https://www.zywvvd.com/notes/coding/cpp/taskflow/taskflow/
“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付
C++ Taskflow QuickStart
https://www.zywvvd.com/notes/coding/cpp/taskflow/taskflow/