1. 程式人生 > >使用 C++ 和 MFC 進行多執行緒程式設計

使用 C++ 和 MFC 進行多執行緒程式設計

程序是應用程式的執行例項。例如,雙擊“記事本”圖示時,將啟動執行“記事本”的程序。

執行緒是程序內的執行路徑。啟動“記事本”時,作業系統建立程序並開始執行該程序的主執行緒。此執行緒終止時,程序也終止。啟動程式碼以函式地址的形式將此主執行緒提供給作業系統。通常是所提供的main 函式或 WinMain 函式的地址。

如果願意,可以在應用程式中建立其他執行緒。如果在處理後臺任務或維護任務時不希望使用者等待這些任務完成,則可能需要建立其他執行緒。MFC 應用程式中的所有執行緒都由CWinThread 物件表示。大多數情況下,甚至不必顯式建立這些物件,而只需呼叫框架 Helper 函式AfxBeginThread

,該函式將為您建立CWinThread 物件。

MFC 區分兩種型別的執行緒:使用者介面執行緒和輔助執行緒。使用者介面執行緒通常用於處理使用者輸入及響應使用者生成的事件和訊息。輔助執行緒通常用於完成不需要使用者輸入的任務(如重新計算)。Win32 API 不區分執行緒型別;它只需要瞭解執行緒的起始地址以開始執行執行緒。MFC 為使用者介面中的事件提供訊息泵,從而對使用者介面執行緒進行專門處理。CWinApp 是使用者介面執行緒物件的一個示例,因為它從CWinThread 派生並對使用者生成的事件和訊息進行處理。

應特別注意以下情況:可能有不止一個執行緒需要訪問同一物件。多執行緒處理:程式設計提示

介紹了一些可以避免在這些情況下可能發生的問題的技術。多執行緒處理:如何使用同步類說明如何使用可用的類從多個執行緒同步訪問一個物件。

編寫和除錯多執行緒處理本身是一項複雜棘手的任務,因為您必須確保一次只能有一個執行緒訪問物件。多執行緒處理主題沒有講述多執行緒處理的基礎知識,而只是說明了如何在多執行緒程式中使用 MFC。Visual C++ 中包含的多執行緒 MFC 示例闡釋了幾種多執行緒“新增功能”和 MFC 中未包含的 Win32 API,但只是一些入門知識。

有關作業系統如何處理程序和執行緒的更多資訊,請參見 Windows SDK 中的程序和執行緒

有關 MFC 多執行緒支援的更多資訊,請參見以下主題: