Node.js 工作线程池,把计算密集型任务转移到子线程执行,避免阻塞主事件循环。
taskflow/taskflow
一个仅含头文件的 C++ 库,用任务图编写任务并行程序,支持多线程与 CUDA GPU。
- Star
- 12,210
- Fork
- 1,417
- 未关闭 Issue
- 39
- 最近提交
- 10天前
这是什么?
Taskflow 是一个 C++ 库,用任务依赖图来描述并行工作。开发者把任务写成 lambda,声明任务之间的先后关系,再交给执行器调度到多个 CPU 线程上运行。它是纯头文件库,只需引入头文件即可使用,无需单独编译或安装。
除静态任务图外,Taskflow 还支持在运行时动态生成子图的递归任务、可构成循环与分支的条件任务,以及带动态依赖的异步任务。库中提供 for_each、reduce、sort 等并行算法和流水线(pipeline)组件,并可通过 CUDA Graph 任务把计算卸载到 NVIDIA GPU。配套的性能分析工具 TFProf 可在设置 TF_ENABLE_PROFILER 环境变量后,通过网页界面查看执行轨迹。
项目需要支持 C++20 的编译器,例如 GCC 11+、Clang 12+、MSVC 2019 或 nvcc 12+,可在 Linux、Windows 和 macOS 上运行。
核心功能
- 01纯头文件库,引入头文件即可使用,无需安装。
- 02通过 precede 和 succeed 声明依赖关系构建静态任务图。
- 03支持递归子图、用于循环和分支的条件任务,以及带动态依赖的异步任务。
- 04提供 for_each、reduce、sort 等并行算法和流水线组件。
- 05通过 CUDA Graph 将计算任务卸载到 NVIDIA GPU。
- 06内置 TFProf 性能分析工具,并可将任务图导出为 DOT 格式。
适用场景
- 在多核 CPU 上并行化依赖关系复杂的 C++ 任务。
- 在同一个调度图中协同 CPU 与 CUDA GPU 计算,用于科学计算。
- 分析和可视化多线程 C++ 程序的执行时间线。
快速上手
- 1
编写 README 中的示例程序 simple.cpp
- 2
克隆 Taskflow 仓库(只需一次)
git clone https://github.com/taskflow/taskflow.git - 3
编译程序,并将编译器指向 taskflow 头文件目录
g++ -std=c++20 simple.cpp -I taskflow/ -O2 -pthread -o simple - 4
运行编译后的程序
./simple
使用前须知
- 需要支持 C++20 的编译器,例如 GCC 11+、Clang 12+ 或 MSVC 2019。
- GPU 任务功能需要 NVIDIA CUDA Toolkit 及其编译器(nvcc)。
标签
常见问题
- taskflow 是什么?
- 一个仅含头文件的 C++ 库,用任务图编写任务并行程序,支持多线程与 CUDA GPU。 Taskflow 是一个 C++ 库,用任务依赖图来描述并行工作。开发者把任务写成 lambda,声明任务之间的先后关系,再交给执行器调度到多个 CPU 线程上运行。它是纯头文件库,只需引入头文件即可使用,无需单独编译或安装。
- taskflow 可以免费使用吗?用的什么许可证?
- taskflow 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
- taskflow 还在维护吗?
- 活跃维护中。taskflow 最近一次提交是在 2026年10月15日。
- taskflow 适合用来做什么?
- 在多核 CPU 上并行化依赖关系复杂的 C++ 任务。 在同一个调度图中协同 CPU 与 CUDA GPU 计算,用于科学计算。 分析和可视化多线程 C++ 程序的执行时间线。
- taskflow 怎么安装和运行?
- 编写 README 中的示例程序 simple.cpp 克隆 Taskflow 仓库(只需一次): git clone https://github.com/taskflow/taskflow.git 编译程序,并将编译器指向 taskflow 头文件目录: g++ -std=c++20 simple.cpp -I taskflow/ -O2 -pthread -o simple 运行编译后的程序: ./simple
- 在哪里获取 taskflow?
- 源代码和安装说明在 GitHub 上:https://github.com/taskflow/taskflow
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
面向 NVIDIA GPU 的 CUDA C++ 模板库与 Python DSL,用于编写高性能矩阵乘法等线性代数内核。
Ruby 并发工具库,提供 Future/Promise、线程池、Agent、Atom、线程安全集合等并发原语。
Rust 数据并行库,只需修改少量代码即可把顺序迭代器改为并行执行。
GPU.js 可将简单的 JavaScript 函数转译为 GPU 着色器代码,在浏览器和 Node.js 中加速计算,无 GPU 时回退到普通 JavaScript。