一、线程同步的几种方法
多线程主要有以下几种同步方法:
二、几种同步方式的比较
同步方式 | 优缺点和适用范围 |
---|---|
互斥量 | 最简单的锁,使用临界区的方式锁住代码块,最基础的锁,适用于多线程互斥 |
读写锁 | 有更高的并行性,只会锁住写锁,读锁共享,适用于读远大于写的场景 |
屏障 | 适用于线程等待,直到多个线程到达同一点时再继续运行,主要用于同步 |
条件变量 | 允许线程以无竞争的方式等待特定条件的发生,适用于生产者和消费者场景 |
信号量 | 通过PV变量的方式,多用于生产者和消费者场景,和条件变量类似 |
自旋锁 | 被锁住时线程处于忙等,适用于锁被持有的时间短,不希望线程把时间花在重新调度上 |
三、信号量和条件变量的区别
- 条件变量需要用到互斥锁,信号量不用
- 信号量是基于PV操作,需要多个信号量配合使用
- 信号量可以用于线程和进程,条件变量只能用于线程
此处评论已关闭