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