linux锁机制分析

1、读写锁(rwlock)运行机制

        读写锁分为读锁(也称共享锁),写锁(也称排他锁,或者独占锁):

        第一、要操作的数据区被上了读锁:

       1、请求是读数据时,上读锁,多个读锁不排斥(在访问数据的读者上限未达到时,可以对该数据区再上读锁);

       2、请求是写数据,则不能马上上写锁,而是要等到数据区的所有锁(包括读锁和写锁)都释放掉后才能开始上写访问。

       第二、要操作的数据区上了写锁:

       则不管是什么请求都必须等待数据区的写锁释放掉后才能上锁访问。


2、RCU锁机制

       第一、写数据的时候,不需要像读写锁那样等待所有锁的释放。而是会拷贝一份数据区的副本,然后在副本中修改,等待修改完后。用这个副本替换原来的数据区, 替换的时候就要像读写锁中上写锁那样,等到原数据区上所有访问者都退出后,才进行数据的替换;根据这种特性可以推断出,用RCU锁可以有多个写者,拷贝了 多份数据区数据,修改后各个写着陆续的替换掉原数据区内容。

       第二、读数据的时候,不需要上任何锁,也几乎不需要什么等待(读写锁中如果数据区有写锁则要等待)就可以直接访问数据。写数据中替换原数据时,只要修改指针就可以,消耗的时间可以几乎可以忽略,所以读数据不需要其他额外开销。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值