1.线程池是是什么,组成结构,为什么
2.线程池实现 核心代码
3.线程池在开源框架中的应用
线程池是管理维持固定数量的池式结构
为什么是固定数量?
如何决定数量?
区分任务
1.cpu密集型 核心数个
2.io密集型(网络io,磁盘io)两倍的核心数个
为什么需要线程池?
性能优化,框架中最核心组件
某类任务特别耗时,严重影响该线程处理其他任务
1.异步执行的
2.作用:a.复用线程资源
b.充分利用系统资源
线程池是属于生产消费模型
线程池运行环境构成:
生产者线程 发布任务
队列 存储任务 调度线程池
消费者线程 取出任务,执行任务
自旋锁 互斥锁
区别在于一个线程在执行临界资源,其他线程在干什么
互斥锁其他线程发现锁被占用时去做别的
自旋锁其他线程发现锁被占用时,一直循环等待。
使用场景:如果一个锁持有临界资源的时间 (O(n))大于重新访问锁的时间,就用互斥锁
O(1)就用自旋锁
gcc -Wl,-rpath=./ main.c -o main -I./ -L./ -lthrd_pool -lphtread