关于ReaderWriterLockSlim
:
随后在相同线程中获取两个锁实际上应该抛出LockRecursionException
(递归策略设置为NoRecursion
)。
我的观察结果:
LockRecursionException
LockRecursionException
LockRecursionException
LockRecursionException
LockRecursionException
LockRecursionException
LockRecursionException
这种行为是否正确?
答案 0 :(得分:4)
处于可升级模式的线程可以通过先调用
EnterReadLock
方法然后调用ExitUpgradeableReadLock
方法降级到读取模式。所有锁定递归策略都允许使用此降级模式,甚至是NoRecursion
。
我的理解是,对于写入情况,进入写锁定是无论如何从可升级到写入模式的正常方式,因此即使在{{1}的策略下也必须支持(对于不可升级的可升级锁似乎没什么意义:)