基于C++11线程池项目博客目录汇总
发表于|更新于|从零开始的C++项目实践线程池
|总字数:119|阅读时长:1分钟|浏览量:
基于C++11线程池项目博客目录汇总
线程池 | ThreadPool的submitTask和threadFunc方法-CSDN博客
线程池 | Thread、ThreadPool类-CSDN博客
基于C++14和C++17的改进版本:
文章作者: Darling
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Darlingの妙妙屋!
相关推荐

2025-01-15
packaged_task 、future知识点
packaged_task 、future知识点以下是对 packaged_task 和 future 的详细解释,尽量简单易懂并结合例子说明: 1. packaged_task 基本概念: packaged_task 是一个类模板,它将一个可调用对象(如函数、函数对象、lambda 表达式等)和一个 future 关联起来。它可以将可调用对象的结果存储在 future 中,以便在将来的某个时间点获取结果。 可以将 packaged_task 看作是一个任务包装器,它包装了一个任务,并允许你在另一个线程中执行该任务,同时提供一种机制,让你可以在其他地方获取该任务的结果。 使用示例: 12345678910111213141516171819202122#include <iostream>#include <thread>#include <future>#include <functional>int add(int a, int b) { return a + b;}int main()...

2025-01-10
线程池 | Any、Semaphore类
线程池 | Any、Semaphore类1.Any类123456789101112131415161718192021222324252627282930313233343536373839404142434445464748//Any类 表示可以接受任意数据的类型class Any{public: Any() = default; ~Any() = default; Any(const Any&) = delete; Any& operator=(const Any&) = delete; Any(Any&&) = default; Any& operator=(Any&&) = default; //这个构造函数可以让Any类型接受任意其它的数据 template <typename T> Any(T...

2025-01-11
线程池 | Result、Task类
线程池 | Result、Task类1.Task类123456789101112131415//任务抽象基类class Task{public: Task(); ~Task() = default; void exec(); void setResult(Result* res); //用户可以自定义任意任务类型,从Task继承,重写run方法,实现自定义任务处理 virtual Any run() = 0;private: //不用shared是避免了智能指针交叉引用的问题 Result* result_;//Result 的生存周期要长于Task}; 使用时,用户自己定义一个mytask类继承Task类,重写run方法完成自己想要的任务即可。 exec就是用来执行run()方法的一个包装函数 123456789101112131415//////////Task方法实现Task::Task():result_(nullptr){}void Task::exec(){ if (result_ !=...

2025-01-16
线程池 | Linux平台编译线程池动态库
线程池 | Linux平台编译线程池动态库环境:ubuntu24.04 1.编译 1g++ -fPIC -shared threadPool.cpp -o libtdpool.so -std=c++17 g++版本至少要在5.5以上才可以 12345678910一般程序在/usr/lib /usr/local/lib找.a静态库和.so动态库的在/usr/include/usr/local/include找*.h头文件的 所以要把.so放入对应位置 12sudo mv libtdpool.so /usr/local/libsudo mv threadpool.h /usr/local/include 删除threadPool.cpp 1g++ 测试.cpp -std=c++17 -ltdpool 2.运行1./a.out 发现不能直接运行有报错。 原因: 运行时的动态库目录和编译时不一样的 1cd /etc/ld.so.conf.d 1sudo vim...

2025-01-12
线程池 | ThreadPool的submitTask和threadFunc方法
线程池 | ThreadPool的submitTask和threadFunc方法123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263//线程池类型class ThreadPool{public: ThreadPool(); ~ThreadPool(); //设置线程池工作模式 void setMode(PoolMode mode); //设置task任务队列上限阈值 void setTaskQueMaxThresHold(int threshold); //设置线程池cached模式下线程数量上限 void setthreadSizeThresHold(int threshold); //给线程池提交任务 Result submitTask(std::shared_ptr<Task> sp); //启动线程池 返回值是当前电脑的CPU核心数量 void start(int...

2025-01-15
线程池 | 改进版
线程池 | 改进版1.改进点1.如何能让用户提交任务的过程更加简单方便? 1234从pool.submitTask(std::make_shared<MyTask>(1,...
评论
公告
上学的第一天就在为高考做准备,谈恋爱的第一天就在为结婚做准备,工作的第一天就在为买房做准备。如果任何一个环节出了问题,结论就是“这么多年书白读了”“白白在一个人身上浪费青春”“工作了这么多年有什么用”。 ————功利主义导向的思考方式往往使我们忘却了生命的本质是一场历程。