c 程序和執行緒的區別與聯絡

2022-09-26 01:33:12 字數 1306 閱讀 8732

引入執行緒是為了減少程式在併發執行時所付出的時空開銷。

屬性:

雖然已被終止但尚未釋放資源的執行緒,仍可以被需要他的執行緒所呼叫,以使被終止的執行緒重新恢復執行。為此,呼叫者執行緒須呼叫一條被稱為「等待執行緒終止」的連線命令,來與該執行緒重新連線,如果在乙個呼叫者執行緒呼叫"等待執行緒終止"的連線命令,試圖與指定執行緒相連線時,若指定執行緒zjebxjgie尚未被終止,則呼叫連線命令的執行緒將會阻塞,直至指定執行緒被終止後,才能實現它與呼叫者執行緒的連線並繼續執行,若指定執行緒已被終止,則呼叫執行緒不會被阻塞而是繼續執程式設計客棧行。

一、程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,是系統進行資源分配和排程的乙個獨立單位。

二、執行緒是程序的乙個實體,是cpu排程和分派的基本單位,他是比程序更小的能獨立執行的基本單位,執行緒自己基本上不擁有系統資源,只擁有一點在執行中必不可少的資源(如程式計數器,一組暫存器和棧),乙個執行緒可以建立和撤銷另乙個執行緒;

(1)乙個執行緒只能屬於乙個程序,而乙個程序可以有多個執行緒,但至少有乙個執行緒。

(2)資源分配給程序,同一程序的所有執行緒共享該程序的所有資源。

(3)執行緒在執行過程中,需要協作同步。不同程序的執行緒間要利用訊息通訊的辦法實現同步。

(4)處理機分給執行緒,即真正在處理機上執行的是執行緒。

(5)執行緒是指程序內的乙個執行單元,也是程序內的可排程實體。

(1)排程:執行緒作為排程和分配的基本單位,程序作為擁有資源的基本單位。

(2)併發性:不僅程序之間可以併發執行,同乙個程序的多個執行緒之間也可以併發執行。

(3)擁有資源:程序是擁有資源的乙個獨立單位,執行緒不擁有系統資源,但可以訪問隸屬於程序的資源。

(4)系統開銷:在建立或撤銷程序的時候,由於系統都要為之分配和**資源,導致系統的明顯大於建立或撤銷執行緒時的開銷。但程序有獨立的位址空間,程序崩潰後,在保護模式下不會對其他的程序產生影響,而執行緒只是乙個程序中的不同的執行路徑。執行緒有自己的堆疊和區域性變數,但執行緒之間沒有單獨的位址空間,乙個執行緒死掉就等於整個程序死掉,所以多程序的程式要比多執行緒的程式健壯,但是在程序切換時,耗費的資源較大,效率要差些。

執行緒的劃分尺度小於程序,使得多執行緒程式的併發性高。

另外,程序在執行過程中擁有獨立的記憶體單元,而多個執行緒共享記憶體,從而極大的提高了程式執行效率。

執行緒在執行過程中,每個獨立的執行緒有乙個程式執行的入口,順序執行序列和程式的出口。但是執行緒不能夠獨立執行,必須依存在應用程式中,有應用程式提供多個執行緒執行控制。

從邏輯角度看,多執行緒的意義子啊與乙個應用程式中,有多個執行部分可以同時執行。但作業系統並沒有將多個執行緒看www.cppcns.com做多個獨立的應用,來實現程序的排程和管理以及資源分配。這就是程序和執行緒的重要區別。

程序和執行緒的區別與聯絡

1.共同點 功能上都是用於實現多工併發程式設計的技術手段,執行緒的狀態包括就緒 執行與阻塞,與程序類似。從系統實現的角度看,程序實體和執行緒實體在linux核心中都是有task struct實現的,兩者的建立最終都是呼叫系統函式clone 2.區別 程序是資源分配的基本單位,執行緒是系統排程的基本單...

程序與執行緒的區別和聯絡

一 程式與程序 程式 一段靜態的 程序 程式的一次動態執行過程 二 程序與執行緒 程序 程序是程序實體 程式段 資料段 pcb 的執行過程,是系統進行資源分配和排程的乙個獨立單位 執行緒 又稱輕量級程序 lightweight process 是程序中某個單一順序的控制流 三 程序與執行緒的區別 2...

程序與執行緒的區別聯絡

自 對於執行緒,程序的概念一直都是比較模糊,最近整理了一下。總結起來就是,執行緒是程序的一部分,程序是程式的一部分。這個說法不準確,但是可以指出期間的差別 程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程序是系統進行資源分配和排程的乙個獨立單位.執行緒是程序的乙個實體,是cpu排程和...