共用方式為


Reader-Writer 鎖定

更新:2007 年 11 月

ReaderWriterLockSlim 類別可讓多執行緒並行讀取資源,但是需要有一個執行緒等待獨佔的鎖定,以便將它寫入資源中。

您可以在應用程式中使用 ReaderWriterLockSlim,以提供存取共用資源的執行緒之間的合作同步處理。鎖定會發生在 ReaderWriterLockSlim 本身。

如同任何執行緒同步處理機制,您必須確定所有執行緒都不會略過 ReaderWriterLockSlim 提供的鎖定。確定的方法之一,是設計封裝共用資源的類別。此類別會提供存取私用共用資源的成員,以及使用私用 ReaderWriterLockSlim 進行同步處理的成員。如需範例,請參閱 ReaderWriterLockSlim 類別的程式碼範例。ReaderWriterLockSlim 的效率已足夠用來同步處理個別物件。

請將應用程式結構化,讓讀寫作業的時間縮為最短。長時間的寫入作業會直接影響處理量,因為寫入鎖定是獨佔的。長時間的讀取作業則會封鎖等待的寫入器,如果有至少一個執行緒等待寫入存取,則需要讀取存取的執行緒也會被封鎖。

注意事項:

.NET Framework 有兩個讀取器-寫入器鎖定:ReaderWriterLockSlimReaderWriterLock。建議所有新的開發作業都使用 ReaderWriterLockSlimReaderWriterLockSlim 類似於 ReaderWriterLock,但它的遞迴和鎖定狀態升降級規則要簡化許多。ReaderWriterLockSlim 可避免許多可能發生死結 (Deadlock) 的情況。此外,ReaderWriterLockSlim 的效能要比 ReaderWriterLock 好許多。

請參閱

參考

ReaderWriterLockSlim

ReaderWriterLock

其他資源

Managed 執行緒

執行緒處理物件和功能