我不完全確定如何最好地完成這種多線程場景,所以任何輸入將不勝感激。讀/寫鎖定混淆
我有一個塊,它讀取數據,幾個線程可以立即訪問。我有另一個寫入數據的塊,只有一個線程可以隨時寫入。只要任何線程正在讀取數據,它也不能開始寫入。 ReaderWriterLockSlim
是這裏的方式,它會等待讀取線程退出之前阻止線程寫入?
我不完全確定如何最好地完成這種多線程場景,所以任何輸入將不勝感激。讀/寫鎖定混淆
我有一個塊,它讀取數據,幾個線程可以立即訪問。我有另一個寫入數據的塊,只有一個線程可以隨時寫入。只要任何線程正在讀取數據,它也不能開始寫入。 ReaderWriterLockSlim
是這裏的方式,它會等待讀取線程退出之前阻止線程寫入?
是的,ReaderWriterLockSlim
非常適合頻繁的讀者/不常使用的寫作者場景。
行爲就像你猜測的那樣 - 只有單個作者,作家阻止,直到所有讀者都完成了,讀者在作者正在進行時無法訪問。
請注意,持有鎖的時間(無論是讀取還是寫入)足夠長以防止任何併發訪問,並且不再存在。
是的,它聽起來像是ReaderWriterLockSlim是你想要的。
只要讀鎖已就位,就不會獲取寫鎖。我建議你閱讀行爲的完整說明文檔(鎖定隊列等):
http://msdn.microsoft.com/en-us/library/system.threading.readerwriterlockslim.aspx
很好,謝謝! – Homde 2010-11-22 14:53:08