RWMutex 注意事项

⚫ RWMutex 是单写多读锁,该锁可以加多个读锁或者一个写锁
⚫ 读锁占用的情况下会阻止写,不会阻止读,多个 Goroutine 可以同时获取
读锁
⚫ 写锁会阻止其他 Goroutine(无论读和写)进来,整个锁由该 Goroutine
独占
⚫ 适用于读多写少的场景
⚫ RWMutex 类型变量的零值是一个未锁定状态的互斥锁
⚫ RWMutex 在首次被使用之后就不能再被拷贝
⚫ RWMutex 的读锁或写锁在未锁定状态,解锁操作都会引发 panic
⚫ RWMutex 的一个写锁去锁定临界区的共享资源,如果临界区的共享资源已
被(读锁或写锁)锁定,这个写锁操作的 goroutine 将被阻塞直到解锁
⚫ RWMutex 的读锁不要用于递归调用,比较容易产生死锁
⚫ RWMutex 的锁定状态与特定的 goroutine 没有关联。一个 goroutine 可
以 RLock(Lock),另一个 goroutine 可以 RUnlock(Unlock)
⚫ 写锁被解锁后,所有因操作锁定读锁而被阻塞的 goroutine 会被唤醒,并
都可以成功锁定读锁
⚫ 读锁被解锁后,在没有被其他读锁锁定的前提下,所有因操作锁定写锁而
被阻塞的 Goroutine,其中等待时间最长的一个 Goroutine 会被唤醒

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机智的程序员zero

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值