C 多執行緒程式設計,既是難點又是重點

2021-04-17 23:54:55 字數 878 閱讀 2415

乙個程序通常定義為程式的乙個例項。在win32中, 程序佔據4gb的位址空間。與它們在ms-dos和16位windows作業系統中不同, win32程序是沒有活力的。這就是說,乙個win32程序並不執行什麼指令,它只是佔據著4gb的位址空間,此空間中有應用程式exe檔案的 **和資料。exe需要的任意dll也將它們的**和資料裝入到程序的位址空間。除了位址空間,程序還占有某些資源,比如檔案、動態記憶體分配和執行緒。當程序終止時,在它生命期中建立的各種資源將被清除。

但是程序是沒有活力的,它只是乙個靜態的概念。為了讓程序完成一些工作,程序必須至少占有乙個執行緒,所以執行緒是描述程序內的執行,正是執行緒負責執行包含在程序的位址空間中的**。實際上,單個程序可以包含幾個執行緒, 它們可以同時執行程序的位址空間中的**。為了做到這一點,每個執行緒有自己的一組cpu暫存器和堆疊。

執行緒是程序內部的乙個執行單元。系統建立好程序後,實際上就啟動執行了該程序的主執行執行緒,主執行執行緒以函式位址形式,比如說main或winmain函式,將程式的啟動點提供給windows系統。主執行執行緒終止了,程序也就隨之終止。

每乙個程序至少有乙個主執行執行緒,它無需由使用者去主動建立,是由系統自動建立的。使用者根據需要在應用程式中建立其它執行緒,多個執行緒併發地執行於同乙個程序中。乙個程序中的所有執行緒都在該程序的虛擬位址空間中,共同使用這些虛擬位址空間、全域性變數和系統資源,所以執行緒間的通訊非常方便,多執行緒技術的應用也較為廣泛。

現代作業系統大都提供了相應的機制,用來處理執行緒的生存期、同步,以及其他「和執行緒有關」的屬性,如優先順序、執行緒專有儲存空間(thread-specific storage)等。多執行緒程式設計是一門語言的難點和重點。

楊強老師,南京理工大學計算機系人工智慧專業博士,東南汽車高階專案架構師,有近15年的軟體專案管理經驗,於4月26日達內名家講堂詳細介紹c++的多執行緒程式設計機制和實戰經驗。

C 多執行緒程式設計

一 thread 基礎 程序 當乙個程式開始執行時,它就是乙個程序,程序包括執行中的程式和程式所使用到的記憶體和系統資源。而乙個程序又是由多個執行緒所組成的。執行緒 執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器 棧指標 程式計數器等 但 區是共享的,即不同的執行緒可以執行同樣的函式 方...

C 多執行緒程式設計

乙個程序通常定義為程式的乙個例項。在win32中,程序佔據4gb的位址空間。與它們在ms dos和16位windows作業系統中不同,win32程序是沒有活力的。這就是說,乙個win32程序並不執行什麼指令,它只是佔據著4gb的位址空間,此空間中有應用程式exe檔案的 和資料。exe需要的任意dll...

C 多執行緒程式設計

建立執行緒的函式 handle createthread lpsecurity attributes lpthreadattributes,使用預設安全形態,設為null,表明不可被子執行緒繼承 size t dwstacksize,初始棧大小,預設值0表示使用與呼叫該函式的執行緒相同的棧大小 lp...