3.1.1手写线程池与性能分析

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

你可能感兴趣的:(零声教育,线程池)