Reader-Writer 鎖定

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

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

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

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

注意事項注意事項

.NET Framework 有兩個讀取器-寫入器鎖定:ReaderWriterLockSlimReaderWriterLockReaderWriterLockSlim 建議用於所有新的程式開發。ReaderWriterLockSlimReaderWriterLock 相似,但前者採取簡化的遞迴規則及升級和降級鎖定狀態。ReaderWriterLockSlim 會避免許多可能發生的死結狀況。此外,ReaderWriterLockSlim 的效能大幅優於 ReaderWriterLock

請參閱

參考

ReaderWriterLockSlim

ReaderWriterLock

其他資源

Managed 執行緒處理

執行緒處理物件和功能