4
关于ReaderWriterLockSlim
:ReaderWriterLockSlim:一个可升级的锁之后获取读锁不会抛出LockRecursionException
获取两个锁随后相同线程内实际上应该抛出一个LockRecursionException
(递归策略设置为NoRecursion
) 。
我的观察结果:
- 读者锁,然后读者锁 - >
LockRecursionException
- 读者锁,然后升级的读者锁 - >
LockRecursionException
- 读者锁,然后作家锁 - >
LockRecursionException
- 升级读者锁,然后读者锁 - >也不例外
- 升级读者锁,然后升级读者锁 - >
LockRecursionException
- 可升级读卡器锁,然后写卡器锁 - >也不例外
- 作家锁,然后读者锁 - >
LockRecursionException
- 作家锁,然后升级读者锁 - >
LockRecursionException
- 作家锁,然后作家锁 - >
LockRecursionException
此行为是否正确?
是的,这也是我的理解。这两条路径是正常的升级和降级场景。因此无论递归策略如何,都必须允许它们。我的困惑至少部分来自于我从来没有把它想象成_downgradeable_lock这个事实。 – 2013-02-11 12:23:33
@JohnSloper不,我没有意识到它也可以降级。方便,但如果一个线程可以确定它不再需要写入。 – shambulator 2013-02-11 12:25:01