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

相关推荐
西岸行者4 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
starlaky4 天前
Django入门笔记
笔记·django
勇气要爆发4 天前
吴恩达《LangChain LLM 应用开发精读笔记》1-Introduction_介绍
笔记·langchain·吴恩达
悠哉悠哉愿意4 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
勇气要爆发4 天前
吴恩达《LangChain LLM 应用开发精读笔记》2-Models, Prompts and Parsers 模型、提示和解析器
android·笔记·langchain
别催小唐敲代码4 天前
嵌入式学习路线
学习
qianshanxue114 天前
计算机操作的一些笔记标题
笔记
土拨鼠烧电路4 天前
笔记11:数据中台:不是数据仓库,是业务能力复用的引擎
数据仓库·笔记
毛小茛4 天前
计算机系统概论——校验码
学习
土拨鼠烧电路4 天前
笔记14:集成与架构:连接孤岛,构建敏捷响应能力
笔记·架构