首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReaderWriterLockSlim:在可升级的锁之后获取读锁不会引发LockRecursionException

ReaderWriterLockSlim:在可升级的锁之后获取读锁不会引发LockRecursionException
EN

Stack Overflow用户
提问于 2013-02-11 11:56:38
回答 1查看 782关注 0票数 4

关于ReaderWriterLockSlim

随后在中获取两个锁,相同的线程实际上应该抛出一个LockRecursionException (递归策略设置为NoRecursion)。

我的观察结果:

  • 读取器锁定,读取器锁定-> LockRecursionException
  • 读取器锁,然后是可升级的读取器锁-> LockRecursionException
  • 读取器锁定,然后写入锁-> LockRecursionException
  • 可升级读取器锁,然后读取器锁->无例外
  • 可升级读取器锁,然后可升级读取器锁-> LockRecursionException
  • 可升级读取器锁,然后写入器锁->无例外
  • 写入锁,然后是读取器锁-> LockRecursionException
  • 写入器锁,然后是可升级的读取器锁-> LockRecursionException
  • 写入锁,然后写入锁-> LockRecursionException

这种行为正确吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-11 12:18:33

从医生那里

处于可升级模式的线程可以先调用EnterReadLock方法,然后调用ExitUpgradeableReadLock方法,从而将其降级为读取模式。对于所有锁递归策略,甚至包括NoRecursion,都允许这种降级模式。

我的理解是,对于写入情况,输入写锁是从可升级模式转移到写入模式的正常方式,因此即使在NoRecursion策略下也必须支持(不可升级的可升级锁似乎没有什么意义:)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14811313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档