共用方式為


讀取器-寫入器同步處理技術範例

更新:2007 年 11 月

這個範例說明 ReaderWriterLock 執行緒同步處理類別的用法。ReaderWriterLock 型別的功能讓開發人員能夠撰寫在執行緒正在寫入或修改資源時,對共用資源執行獨佔存取,但在讀取或查詢資源時則允許非獨佔存取的程式碼。

如需使用這些範例的詳細資訊,請參閱下列主題:

Download sample

若要使用命令提示字元建置範例

  1. 開啟 [命令提示字元] 視窗,並巡覽至此範例的任一程式設計語言的子目錄。

  2. 根據您選擇的程式設計語言,在命令列輸入 msbuild ReaderWriterSynchronizationCS.sln 或 msbuild ReaderWriterSynchronizationVB.sln。

若要使用 Visual Studio 建置範例

  1. 開啟 [Windows 檔案總管],並巡覽至此範例的任一程式設計語言的子目錄。

  2. 根據您選擇的程式設計語言,按兩下 ReaderWriterSynchronizationCS.sln 或 ReaderWriterSynchronizationVB.sln 的圖示,在 Visual Studio 中開啟該檔案。

  3. 按一下 [建置] 功能表上的 [建置方案],

若要執行範例

  1. 巡覽至新的可執行檔所在的目錄。

  2. 在命令列中輸入 ReaderWriter.exe。

    注意事項:

    這個範例會建置一個主控台應用程式。您必須從命令提示字元啟動,才能檢視它的輸出。執行此範例時請注意,每個寫入器 (Writer) 的 [開始寫入] 和 [停止寫入] 輸出會連續發生。這是因為寫入器對資源有獨佔存取權,這一點和讀取器 (Reader) 不同。

備註

如需執行緒同步處理和獨佔存取的詳細資訊,請參閱原始程式碼中的註解和 build.proj 檔案。

下面幾點簡短說明了此範例所使用的類別和技術。

  • 執行緒同步處理

ReaderWriterLock用來保護實作為對 Sleep 之呼叫的邏輯資源。使用 ReaderWriterLock 型別的執行緒可以利用兩種不同的方式維持鎖定。第一種是執行緒可以維持非獨佔模式的讀取鎖定,然後讓其他執行緒取得類別的讀取鎖定。第二種是執行緒可以要求具有獨佔特性的寫入鎖定,在目前維持的讀取和寫入鎖定獲得釋放之前,執行緒都無法取得存取權。

  • 執行緒處理

    • ThreadPool 撰寫 Managed 程式碼時,建議開發人員盡可能使用 QueueUserWorkItem 方法實作非同步方法呼叫。這個範例使用此方式來執行想爭取成為邏輯資源的程式碼。
  • 委派

請參閱

概念

執行緒和執行緒處理

參考

AutoResetEvent

Delegate

Interlocked

Mutex

System.Threading

ThreadPool

WaitCallback

WaitHandle

其他資源

執行緒處理物件和功能