【Linux】深入理解线程同步与互斥
深入理解线程同步与互斥
文章目录
- 深入理解线程同步与互斥
- 一、线程互斥
- 1.1 进程线程间的互斥相关背景概念
- 1.2 互斥量mutex
- 1.3 互斥量实现原理探究
- 二、线程同步
- 2.1 条件变量
- 2.2 同步概念与竞态条件
- 2.3 条件变量函数
- 2.4 生产者消费者模型(321模型)
- 2.4.1 为何要使用生产者消费者模型
- 2.4.2 生产者消费者模型优点
- 2.5 基于BlockingQueue的生产者消费者模型
- 2.5.1 BlockingQueue
- 2.6 为什么pthread_cond_wait需要互斥量?
- 2.7 条件变量使用规范
- 2.8 POSIX信号量
- 2.8.1 基于环形队列的生产消费模型
- 三、线程池
- 3.1 日志与策略模式
- 3.2 线程池设计
- 3.3 线程安全的单例模式
- 3.3.1 单例模式的特点
- 3.3.2 饿汉实现方式和懒汉实现方式
- 3.3.3 饿汉方式实现单例模式
- 3.3.4 懒汉模式实现单例模式
- 3.3.5 懒汉方式实现单例模式(线程安全版本)
- 四、线程安全和重入问题
- 五、常见锁概念
- 5.1 死锁
- 5.2 死锁四个必要条件
- 5.3 避免死锁
- 六、STL,智能指针和线程安全
- 6.1 STL中得容器是否是线程安全的
- 6.2 智能指针是否是线程安全的?
- 七、其他常见的各种锁
一、线程互斥
1.1 进程线程间的互斥相关背景概念
1.2 互斥量mutex
1.3 互斥量实现原理探究
二、线程同步
引入新的奇数,必定引入新的问题,
为了进一步解决问题,就必须有新的技术被引入
在保证安全的前提下,让所有的执行流访问临界资源,
按照一定的顺序进行访问资源 – 》叫做线程同步
2.1 条件变量
2.2 同步概念与竞态条件
2.3 条件变量函数
2.4 生产者消费者模型(321模型)
2.4.1 为何要使用生产者消费者模型
2.4.2 生产者消费者模型优点
2.5 基于BlockingQueue的生产者消费者模型
2.5.1 BlockingQueue
2.6 为什么pthread_cond_wait需要互斥量?
2.7 条件变量使用规范
2.8 POSIX信号量
2.8.1 基于环形队列的生产消费模型
三、线程池
3.1 日志与策略模式
3.2 线程池设计
3.3 线程安全的单例模式
3.3.1 单例模式的特点
3.3.2 饿汉实现方式和懒汉实现方式
3.3.3 饿汉方式实现单例模式
3.3.4 懒汉模式实现单例模式
3.3.5 懒汉方式实现单例模式(线程安全版本)
四、线程安全和重入问题
五、常见锁概念
5.1 死锁
申请⼀把锁是原⼦的,但是申请两把锁就不⼀定了
5.2 死锁四个必要条件
5.3 避免死锁