任务流、线程池推荐

任务流:

线程池:

 

【Taskflow教程】

Modern C++ Parallel Task Programming | Taskflow QuickStart

C++高性能编程——Taskflow并行框架 - 知乎

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;
}

 

 

posted @ 2024-12-28 20:21  夕西行  阅读(124)  评论(0)    收藏  举报