在 Windows 程式設計中,「行程」與「執行緒」是兩個基礎且關鍵的概念。簡單來說,行程 是一個正在執行的程式實例,擁有獨立的虛擬位址空間、程式碼、資料及系統資源(如檔案控制代碼、同步物件等)。一個應用程式可包含一或多個行程。
執行緒 則是作業系統排程 CPU 時間的基本單位。一個行程至少擁有一條執行緒(主執行緒),並可建立多條執行緒。同一行程內的所有執行緒共享該行程的虛擬位址空間、全域變數及系統資源,這使得執行緒間的通訊比行程間通訊更簡單、更高效。
引入執行緒機制主要基於效率考量:
MFC 未封裝行程管理類別,因此需直接使用 CreateProcess API。其原型參數眾多,關鍵參數解析如下:
lpApplicationName / lpCommandLine:指定執行模組與命令列參數。lpProcessAttributes / lpThreadAttributes:安全性屬性(主要用於 NT 核心系統)。bInheritHandles:子行程是否繼承父行程控制代碼(如互斥體、事件、檔案控制代碼等)。dwCreationFlags:建立旗標,控制優先權類別、除錯模式、主控台行程等行為。lpStartupInfo:指定主視窗顯示狀態、標準輸入輸出控制代碼等啟動資訊。lpProcessInformation:輸出參數,接收新行程與主執行緒的控制代碼及 ID。使用 CreateProcess 時,務必正確初始化 STARTUPINFO 結構的 cb 欄位,並妥善處理繼承控制代碼的安全性。若需啟動文件而非執行檔,可搭配 ShellExecute 或 ShellExecuteEx 使用。