
C++11线程池
采用C++11新特性实现线程池,参考施磊课程
APX7409
专注后端、C/C++开发的菜鸟,相信日拱一卒、功不唐捐。欢迎各位对博文批评指正,互相学习
展开
-
cpp11实现线程池(三)——生产者与消费者线程函数实现
线程池中,生产者线程(主线程 Master)的主要工作是给任务队列提交任务函数实现;而消费者线程(Slave)主要工作是从任务队列取任务并执行任务函数。原创 2023-05-21 11:27:19 · 253 阅读 · 0 评论 -
cpp11实现线程池(八)——Linux平台编译线程池动态库
将threadpool.cpp 和 threadpool.h编译成。执行可执行程序但是失败,因为运行时系统寻找动态库位置有所不同。如果是老版本的g++,则可能会出现死锁的现象,是由于g++下。再次执行程序,程序正常运行,乱码是编码问题。值标识是否已经退出,若退出就不要做加锁和。添加一行 /usr/local/lib。命令将用户切换为root用户,紧接着回到测试文件路径,可以使用gdb调试线程。析构不做任何事,导致。原创 2023-05-21 14:53:09 · 264 阅读 · 0 评论 -
cpp11实现线程池(一)——项目介绍
线程池是库的形式提供给用户,是必须放到代码中,不能单独运行,亦称为基础组件第一版线程池任务对象使用继承技术,提供一个抽象基类Task,里面有一个纯虚函数run(),使用时继承该类,并重写该纯虚函数,在这个重写的纯虚函数中完成要执行的具体任务;第二版线程池使用C++11 的来包装任务执行函数,用来接受任意类型的结果。原创 2023-05-21 11:01:21 · 986 阅读 · 0 评论 -
cpp11实现线程池(五)——使用mutex和condition_variable实现Semaphore
以及一个记录数值的变量来实现,注意信号量。原创 2023-05-21 11:49:21 · 179 阅读 · 0 评论 -
cpp11实现线程池(四)——Any类实现原理
需要让一个类型指向其他任意类型,用基类类型可以指向派生类类型。能够获取任务执行结果,同时任务未执行完成时会在。函数的返回值,可以表示任意类型。:如何设置执行任务获得的。原创 2023-05-21 11:43:55 · 182 阅读 · 0 评论 -
cpp11实现线程池(九)——使用packaged_task和future重写线程池
r1和r2放入队列,被两个线程取走,然后r3和r4再将任务放入队列(任务队列满),此时由于r1和r2任务中有sleep仍然被两个线程执行中,此时任务队列已满,主线程无法将r5放入任务队列。设置为 2,提交6个任务(其中3个睡眠2s),线程池只有两个线程。:让提交任务更加方便,我们希望能达到如下形式提交任务。,重点在于任务的封装。原创 2023-05-21 15:51:36 · 648 阅读 · 0 评论 -
cpp11实现线程池(七)——线程池cached模式设计实现
用vector::size() 获取当前容器元素数量不是的,所以采用atomic_int 来实现当前容器元素数量的改变能够保证线程安全。原创 2023-05-21 14:34:34 · 767 阅读 · 0 评论 -
cpp11实现线程池(二)——ThreadPool相关类的设计
enum class能够确保枚举项相同时可以区分开来,如。原创 2023-05-21 11:11:51 · 218 阅读 · 0 评论 -
cpp11实现线程池(六)——线程池任务返回值类型Result实现
提交任务函数submitTask中返回的Result类型应该是用Result类包装当前的task,因为出函数之后taskResult和Task都要互相持有对方的指针,Task要将任务执行结果通过调用传给其对应Result对象。原创 2023-05-21 14:15:49 · 1070 阅读 · 0 评论 -
C++11实现线程池要点导图
原创 2023-08-27 17:03:34 · 180 阅读 · 0 评论