MFC筆記(四)——多執行緒程式設計1:模組、程序、執行緒間的基本概念
阿新 • • 發佈:2018-12-17
一、模組、程序、執行緒
1.1 模組
一段可執行的程式(包括EXE和DLL),其程式程式碼、資料、資源被載入到記憶體中,由系統建立一個數據結構來管理它。這段程式就是一個模組。這裡所說的資料結構(Module Database,即(MDB)),其實就是PE格式中的PE表頭。
1.2 程序
程序主要表達“擁有權”的概念,就是一大堆擁有權的集合。程序擁有地址空間(由memory context決定)、動態配置而來的記憶體、檔案、執行緒和一系列的模組。作業系統使用一個所謂的Process Database(PDB)資料結構,來記錄(管理)它所擁有的一切。
1.3 執行緒
執行緒主要表達模組中的程式程式碼的“執行事實”。系統也是以一個特定的資料結構(Thread Database,TDB)記錄執行緒的所有相關資料,包括執行緒區域性儲存空間(Thread Local Storage,TLS)、訊息佇列、handle表格、地址空間等。
1.4 程序與執行緒的關係
通常程序以一個執行緒(稱為主執行緒)作為開始,根據需要,程序可以產生更多的執行緒(利用CreateThread),讓CPU在同一時間執行不同段落的碼(這是幻覺)。一顆CPU是通過排程器來實現“多個執行緒同時工作”——它以一個硬體定時器和一組複雜的遊戲規則,在不同的執行緒之間做快速切換操作。以Windows 9x和Windows NT而言,在非特殊情況下,每個執行緒被CPU照顧的時間是20個milliseconds。