所以我有一種情況,我可能有很多很多的讀取,只偶爾寫入到多個線程之間共享的資源。ReaderWriterLockSlim.EnterUpgradeableReadLock()與Monitor.Enter()基本相同嗎?
很久以前,我閱讀了關於ReaderWriterLock
,並閱讀了有關ReaderWriterGate
,它試圖減輕許多寫入王牌讀取並損害性能的問題。不過,現在我已經知道ReaderWriterLockSlim
...
從文檔中,我相信任何時候在「可升級模式」中只能有一個線程。在我使用的唯一訪問是EnterUpgradeableReadLock()
(這適合於我的場景)的情況下,那麼和lock(){}
堅持有什麼不同?
下面是摘錄:
試圖進入 升級模式區塊是否有 已經升級模式線程的線程, 如果有線程在等待進入 寫模式,或者如果有是寫模式下的單個線程 。
或者,遞歸策略對此有什麼影響?
檢查這個答案。我在閱讀這篇文章時發現它很有用:http://stackoverflow.com/questions/2494104/readerwriterlockslim-question/2494179#2494179 – 2011-03-30 09:45:01