实战C++手写线程池
课程总目录
文章目录
- 一、项目必备基础概念
-
- 1.1 并发和并行
- 1.2 多线程的优势
- 1.3 线程的消耗
- 1.4 线程池的优势
- 1.5 线程池的两种模式:fixed模式和cached模式
- 1.6 线程同步之线程互斥
- 1.7 线程同步之线程通信
-
- 1.7.1 条件变量
- 1.7.2 信号量
- 1.8 项目设计图浏览
- 二、线程池代码展示
- 三、线程池资源回收死锁问题分析
- 四、线程资源回收策略修改优化
- 五、Linux平台编译线程池动态库
- 六、packaged_task和future机制
一、项目必备基础概念
作为五大池(内存池、连接池、线程池、进程池、协程池)之一,线程池的应用非常广泛,不管是客户端程序,还是后台服务程序,都是提高业务处理能力的必备模块。有很多开源的线程池实现,虽然各自接口使用上稍有区别,但是其核心实现原理都是基本相同的。
1.1 并发和并行
- CPU单核
- CPU多核、多CPU
并发:单核上,多个线程占用不同的CPU时间片,物理上还是串行执行的,但是由于每个线程占用的CPU时间片非常短(比如10ms),看起来就像是多个线程都在共同执行一样,这样的场景称作并发(concurrent)
并行:在多核上或者多CPU上,多个线程是在真正的同时执行,这样的场景称作并行(parallel)
1.2 多线程的优势
首先我们要认识到一个问题