使用 C++ 和 MFC 進行多執行緒處理
Microsoft Foundation Class (MFC) 程式庫支援多執行緒應用程式。 本主題描述多執行緒的進程和執行緒和 MFC 方法。
進程是應用程式的執行實例。 例如,當您按兩下記事本圖示時,您會啟動執行記事本的程式。
執行緒是進程內執行的路徑。 當您開始記事本時,作業系統會建立進程並開始執行該程式的主要執行緒。 當這個執行緒終止時,進程也是如此。 此主要執行緒會以函式位址的形式,由啟動程式碼提供給作業系統。 通常是提供的 或 WinMain
函式位址 main
。
如有需要,您可以在應用程式中建立其他執行緒。 當您不想讓使用者等待背景或維護工作完成時,您可能會想要這麼做來處理背景或維護工作。 MFC 應用程式中的所有線程都會以 CWinThread 物件表示。 在大部分情況下,您甚至不需要明確建立這些物件;而是呼叫架構協助程式函式 AfxBeginThread ,這會為您建立 CWinThread
物件。
MFC 區分兩種類型的執行緒:使用者介面執行緒和背景工作執行緒。 使用者介面執行緒通常用來處理使用者輸入,並回應使用者所產生的事件和訊息。 背景工作執行緒通常用來完成不需要使用者輸入的工作,例如重新計算。 WIN32 API 不會區分執行緒類型;它只需要知道執行緒的起始位址,才能開始執行執行緒。 MFC 會藉由為使用者介面中的事件提供訊息幫浦,特別處理使用者介面執行緒。 CWinApp
是使用者介面執行緒物件的範例,因為它衍生自 CWinThread
並處理使用者所產生的事件和訊息。
應特別注意一個以上的執行緒可能需要存取同一個物件的情況。 多執行緒:程式設計提示 說明可用來解決這些情況下可能發生的問題的技術。 多執行緒:如何使用同步處理類別 描述如何使用可用來將多個執行緒存取的類別同步處理至單一物件。
撰寫和偵錯多執行緒程式設計本質上是一項複雜且棘手的工作,因為您必須確保一次不會由一個以上的執行緒存取物件。 多執行緒主題不會教導多執行緒程式設計的基本概念,只會說明如何在多執行緒程式中使用 MFC。 Visual C++ 中包含的多執行緒 MFC 範例說明 MFC 中未包含的一些多執行緒新增功能和 WIN32 API;不過,它們只是要作為起點。
如需作業系統如何處理進程和執行緒的詳細資訊,請參閱 Windows SDK 中的進程和執行緒 。
如需 MFC 多執行緒支援的詳細資訊,請參閱下列主題: