网络编程——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语言这些没有面向对象机制的。

相关推荐
Drawing stars1 小时前
JAVA后端 前端 大模型应用 学习路线
java·前端·学习
崇山峻岭之间1 小时前
Matlab学习记录33
开发语言·学习·matlab
玄〤2 小时前
黑马点评中 VoucherOrderServiceImpl 实现类中的一人一单实现解析(单机部署)
java·数据库·redis·笔记·后端·mybatis·springboot
科技林总2 小时前
【系统分析师】3.5 多处理机系统
学习
芯思路4 小时前
STM32开发学习笔记之三【按键】
笔记·stm32·学习
Lips6114 小时前
2026.1.11力扣刷题笔记
笔记·算法·leetcode
charlie1145141914 小时前
从 0 开始的机器学习——NumPy 线性代数部分
开发语言·人工智能·学习·线性代数·算法·机器学习·numpy
咚咚王者4 小时前
人工智能之核心基础 机器学习 第十二章 半监督学习
人工智能·学习·机器学习
袁气满满~_~5 小时前
Python数据分析学习
开发语言·笔记·python·学习
njsgcs6 小时前
ppo 找出口模型 训练笔记
人工智能·笔记