任务流、线程池推荐
任务流:
- 推荐一,Taskflow。官方地址:https://github.com/taskflow/taskflow。需要C++17支持,即编译器要求:GCC >= 8.0、Clang >= 7.0、MSVC >= 19.27 (Visual Studio 2019)
- 推荐二,CGraph。官方地址:https://github.com/ChunelFeng/CGraph。C++11即可。
线程池:
- 线程池 https://github.com/ChunelFeng/CThreadPool?tab=readme-ov-file。是作者从CGraph中摘出来的。UP主的B站视频
【Taskflow教程】
Modern C++ Parallel Task Programming | Taskflow QuickStart
dot任务图查看网址 https://dreampuf.github.io/GraphvizOnline/
【简单使用】
官网下载taskflow
CMakeLists.txt
cmake_minimum_required(VERSION 3.27) project(untitled1) set(CMAKE_CXX_STANDARD 17) include_directories(D:/down/taskflow) add_executable(${PROJECT_NAME} main.cpp)
main.cpp
#include <iostream> #include "taskflow/taskflow.hpp" int main() { tf::Taskflow taskflow; //创建任务图 tf::Task A=taskflow.placeholder(); //创建一个没有工作内容的占位符任务 A tf::Task B=taskflow.emplace([](){std::cout<<"task B\n";}); //创建任务 B //使用 C++ 结构化绑定一次创建多个任务 D, E, F auto [D,E,F]=taskflow.emplace( [](){std::cout<<"task D\n";}, [](){std::cout<<"task E\n";}, [](){std::cout<<"task F\n";} ); A.precede(B); B.precede(D,E,F); //查看下任务图,将终端代码复制到网页查看。https://dreampuf.github.io/GraphvizOnline/ A.name("A");//各任务名,否则显示线程号 B.name("B"); D.name("D"); E.name("E"); F.name("F"); taskflow.dump(std::cout); //执行任务图 tf::Executor executor; executor.run(taskflow).wait(); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-12-28 MFC 图在PictureControl控件的中间显示,像素在控件中的坐标
2019-12-28 C++理念——类与类