Linux读写锁使用

读写锁很早就知道了,但是使用的不多,这次代码中出现了,才认真思考怎么用。摘录一下:


读写锁的特点是:
当读写锁是写加锁时,在这个锁被解锁之前,所有试图对这个锁加锁的线程都会被阻塞。
当读写锁是读加锁时,在这个锁被解锁之前,所有试图以读模式对他进行加锁的线程都可以得到访问权,但是如果线程以写模式对此锁加锁时会造成阻塞,直到所有线程释放读锁
这里有一个问题,如果一个线程现 A 获得一把读锁,现在来了一个线程B请求写锁,那么它就要等到线程A释放读锁,但是如果在A释放之前又一个线程获得了读锁(读锁可以多次获得),
并且在改线程释放读锁之前又一个线程请求到了读锁,假设后续一直有读锁请求成功,那么请求写锁的进程B就不得不一直阻塞等待所有读锁的释放。所以相关的实现一般让当一个读写锁处于读模式锁住时,此时来了另一个线程的写模式加锁请求,那么读[size=large]写锁通常会阻塞随后的读模式锁请求[/size],这样可以避免锁被读模式长期占用,而写模式请求一直得不到满足
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值