Young87

当前位置:首页 >个人收藏

POS线程同步互斥锁和读写锁的区别和各自适用场景

读写锁特点:

1)多个读者可以同时进行读
2)写者必须互斥(只允许一个写者写,也不能读者写者同时进行)
3)写者优先于读者(一旦有写者,则后续读者必须等待,唤醒时优先考虑写者)

 

互斥锁特点:

  一次只能一个线程拥有互斥锁,其他线程只有等待

 

自旋锁:

一次只能有一个进程进入临界区,读写锁是自旋锁的一个特例。

 

应用场景:

以队列操作为例:

线程A对队列负责将数据写入队列。须采取“互斥锁”或“读写锁的写锁”

线程B队列负责从队列读出数据。须采取“互斥锁”或“读写锁的写锁”,读队列操作,不可采取“读写锁的读锁”,因为从队列读出数据时,需要更改队列本身的下标索引,如果多个线程同时操作该队列的话,就会导致队列下标索引混乱。

 

但是对队列的查询操作则最好采取“读写锁的读锁”来提高效率。

 

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: 国内年薪第一的数据库工程师成长经历

下一篇: 男人女人都应该知道的网络黑话大全

精华推荐