网络编程——threadpool.h学习笔记

1.本质上是一个类模板,因为这样就可以处理多种任务。

2.类的数据对象:线程的最大数目、实际线程(指针,在堆上创建)、任务最大数目、任务队列(实际是指向任务的指针组成的队列,可以用queue或者list)、是否停止、任务信号量、锁变量。

3.构造和析构

初始化线程池使用new和delete,这也是一种RAII的思想,即用类来管理资源的申请和释放。

需要初始化2中提出的四个内容,任务队列和信号量采用默认初始化。停止先初始化为false。

4.append,增加任务,也就是任务到来,当任务到来,调用它。

然后post任务信号量,可以尝试唤醒线程。

5.线程注册的函数是循环,反复判断停止的布尔变量,并且在这个基础上去wait,如果没有任务,会睡眠不会反复占用资源,如果有任务会上锁,去取任务,然后执行任务的处理过程。

通过my_stop我们可以人为的停止这个线程池的使用。

6.总结:这里的锁的使用也是我们在pthread_mutex_t上RAII封装的一个锁,语言没有把它直接封装成类是为了兼容c语言这些没有面向对象机制的。

相关推荐
长安11081 分钟前
web后端----oatpp临时笔记
笔记
妄汐霜26 分钟前
小白学习笔记(spring框架ioc)
笔记·学习
arvin_xiaoting26 分钟前
OpenClaw学习总结_I_核心架构_5:Memory系统详解
学习·系统架构·学习总结·ai agent·openclaw·memory系统
却道天凉_好个秋35 分钟前
音视频学习(九十八):Profile
学习·音视频·profile
Kapibalapikapi36 分钟前
操作笔记 | Ubuntu Server VMware虚拟机的文件传输
笔记·操作文档
shangjian00739 分钟前
OpenClaw学习笔记-01-架构篇
笔记·学习·架构
少许极端40 分钟前
算法奇妙屋(三十四)-贪心算法学习之路 1
学习·算法·贪心算法
551只玄猫1 小时前
【基于python的金融分析和风险管理 学习笔记】中阶篇 第6章 分析利率和汇率
笔记·python·学习·金融·学习笔记·汇率·利率
孤独的小丑1 小时前
OpenClaw学习资源汇编
汇编·学习
ljt27249606611 小时前
Flutter笔记--加水印
笔记·flutter