等候同步處理技術範例
更新:2007 年 11 月
這個範例說明如何使用 WaitHandle 類別進行執行緒同步處理。WaitHandle 衍生型別 Mutex 會用來強制執行對受保護程式碼區塊的互斥存取。
如需使用這些範例的詳細資訊,請參閱下列主題:
若要使用命令提示字元建置範例
開啟 [命令提示字元] 視窗,並巡覽至此範例的任一程式設計語言的子目錄。
根據您選擇的程式設計語言,在命令列輸入 msbuild WaitSynchronizationCS.sln 或 msbuild WaitSynchronizationVB.sln。
若要使用 Visual Studio 建置範例
開啟 [Windows 檔案總管],並巡覽至此範例的任一程式設計語言的子目錄。
根據您選擇的程式設計語言,按兩下 WaitSynchronizationCS.sln 或 WaitSynchronizationVB.sln 檔案的圖示,在 Visual Studio 中開啟該檔案。
在 [建置] 功能表上,按一下 [建置方案]。
若要執行範例
巡覽至新的可執行檔所在的目錄。
在命令列中輸入 Mutex.exe。
注意事項: 這個範例會建置一個主控台應用程式。您必須從主控台視窗啟動,才能檢視其輸出。
備註
這個範例最多可以讓五個非同步方法呼叫佇列。接著每個方法都會等著擁有資源、寫入主控台、休眠,然後再度寫入主控台。
下面幾點簡短說明了此範例所使用的技術和類別:
執行緒同步處理
Mutex 為執行緒同步處理提供互斥能力。
AutoResetEvent 這個範例的主執行緒會等候 AutoResetEvent,直到它設定為止。這表示最後一個非同步函式已完成工作。
WaitHandleWaitHandle 類別是衍生 Mutex 和 AutoResetEvent 類別的基底類別。這個型別實作了一些方法,以便「等候」各個衍生型別「收到信號」。
Interlocked 這個範例使用靜態 Decrement 方法,以非同步的方式存取計數器變數,以表示設定 AutoResetEvent 的時機。
執行緒處理
- ThreadPool 撰寫 Managed 程式碼時,建議開發人員盡可能使用 QueueUserWorkItem 方法實作非同步方法呼叫。這個範例使用此方式來執行想爭取成為邏輯資源的程式碼。
委派
- WaitCallback 用來建立型別安全的回呼方法供 ThreadPool 類別使用。
如需執行緒和同步處理的詳細資訊,請參閱原始程式碼和 build.proj 中檔案的註解。