基于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,...
 评论
公告
上学的第一天就在为高考做准备,谈恋爱的第一天就在为结婚做准备,工作的第一天就在为买房做准备。如果任何一个环节出了问题,结论就是“这么多年书白读了”“白白在一个人身上浪费青春”“工作了这么多年有什么用”。               ————功利主义导向的思考方式往往使我们忘却了生命的本质是一场历程。







