多執行緒程式設計(一)

2021-08-20 18:00:05 字數 1631 閱讀 4458

程式:完成特定功能的一系列指令的集合 ,c**(源程式)經過編譯鏈結後生成可執行檔案,可執行檔案稱為程式,它包含**段和資料段。(儲存在磁碟上)

程序:程式的一次動態執行過程,強調動態性,它包括**段+資料段+堆疊段+pcb

乙個程序只能對應乙個程式,乙個程式可以對應對個程序

執行緒:在乙個程式裡的乙個執行線路就叫做執行緒thread,更準確的說執行緒是乙個程序內的執行流程

一切程序至少有乙個執行執行緒

程序與執行緒

對於多執行緒時,cpu state有多份

fork和建立新執行緒的區別

執行緒的優點

執行緒的缺點

執行緒排程競爭範圍

作業系統提供了各種模型,用來排程應用程式建立的執行緒。這些模型之間的主要不同是:在競爭系統資源(特別是cpu時間)時,執行緒排程競爭範圍(thread-scheduling contention scope)不一樣

三種執行緒模型

n:1使用者執行緒模型:「執行緒實現」建立在「程序控制」機制之上,由使用者空間的程式庫來管理。os核心完全不知道執行緒資訊。這些執行緒稱為使用者空間執行緒。這些執行緒都工作在「程序競爭範圍」

在n:1執行緒模型中,核心不干涉執行緒的任何生命活動,也不干涉同一程序中的執行緒環境切換。

在n:1執行緒模型中,乙個程序中的多個執行緒只能排程到乙個cpu,這種約束限制了可用的並行總量。

第二個缺點是如果某個執行緒執行了乙個「阻塞式」操作(如read),那麼,程序中的所有執行緒都會阻塞,直至那個操作結束。為此,一些執行緒的實現是為這些阻塞式函式提供包裝器,用非阻塞版本替換這些系統呼叫,以消除這種限制。

1:1核心執行緒模型:在1:1核心執行緒模型中,應用程式建立的每乙個執行緒都由乙個核心執行緒直接管理。os核心將每乙個核心執行緒都調到系統cpu上,因此,所有執行緒都工作在「系統競爭範圍」。這種執行緒的建立與排程由核心完成,因為這種執行緒的系統開銷比較大(但一般來說,比程序開銷小)

n:m混合執行緒模型:n:m混合執行緒模型提供了兩級控制,將使用者執行緒對映為系統的可排程體以實現並行,這個可排程體稱為輕量級程序(lwp:lightweight process),lwp再一一對映到核心執行緒。os核心將每乙個核心執行緒都調到系統cpu上,因此,所有執行緒都工作在「系統競爭範圍」。

多執行緒程式設計(一)

引用標頭檔案thread 建立執行緒 thread mythread 多執行緒函式 阻塞主線程直到子執行緒執行完畢 mythread.join 分離主線程和子執行緒,使得主線程和子執行緒可以同步執行下去 一旦分離後,就無法再使執行緒join 主線程結束後子執行緒也結束 mythread.detach...

Linux 多執行緒程式設計(一)

1 建立執行緒 有乙個比較特殊的執行緒,就是主線程或者稱為初始執行緒,它是當乙個程序被建立時建立的。而其他執行緒則是在初始執行緒中呼叫pthread create建立的。建立的新執行緒初始為ready狀態,等待處理器排程。2 執行執行緒 執行緒被建立後,就會執行phtread create的star...

C Socket多執行緒程式設計(一)

csharp view plain copy 實現伺服器端 建立client類 using system using system.collections.generic using system.linq using system.text namespace chartserver endreg...