執行緒和程序的區別是什麼,從一些部落格及知乎的總結

2022-03-23 02:00:47 字數 2839 閱讀 9139

1、執行緒是什麼?程序是什麼?二者有什麼區別和聯絡?

(1)執行緒是程序中實施排程和分派的基本單位; 作業系統提供現成的目的就是為了方便高效地實現併發處理(進一步提高併發度)

(2)程序是程式的一次執行;程序是可以與其他計算併發執行的計算;程序是乙個程式程式及其資料在處理器上順序執行時發生的活動;程序是程式在乙個資料集合上的執行過程,是系統進行資源分配和排程的乙個獨立單位

兩者的聯絡:

程序和執行緒都是作業系統所執行的程式執行的基本單元。

1、乙個程序可以有多個執行緒,但至少有乙個執行緒;而乙個執行緒只能在乙個程序的位址空間內活動。

2、資源分配給程序,同乙個程序的所有執行緒共享該程序所有資源。

3、cpu分配給執行緒,即真正在處理器執行的是執行緒。

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

區別:

(1)程序具有獨立的空間位址,乙個程序崩潰後,在保護模式下不會對其它程序產生影響。

(2)執行緒只是乙個程序的不同執行路徑,執行緒有自己的堆疊和區域性變數,但執行緒之間沒有單獨的位址空間,乙個執行緒死掉就等於整個程序死掉。

2、什麼是多執行緒?

多執行緒:是指從軟體或者硬體上實現多個執行緒的併發技術。

多執行緒的好處:

(2)發揮多核處理器的優勢,併發執行讓系統執行的更快、更流暢,使用者體驗更好

多執行緒的缺點:

(1)大量的執行緒降低**的可讀性;

(2)更多的執行緒需要更多的記憶體空間

(3)當多個執行緒對同乙個資源出現爭奪時候要注意執行緒安全的問題。

知乎上的說法

開個qq,開了乙個程序;開了迅雷,開了乙個程序。

在qq的這個程序裡,傳輸文字開乙個執行緒、傳輸語音開了乙個執行緒、彈出對話方塊又開了乙個執行緒。

所以執行某個軟體,相當於開了乙個程序。在這個軟體執行的過程裡(在這個程序裡),多個工作支撐的完成qq的執行,那麼這「多個工作」分別有乙個執行緒。

所以乙個程序管著多個執行緒。

通俗的講:「程序是爹媽,管著眾多的執行緒兒子」...

程序是應用程式的執行例項。比如說,當你雙擊的microsoft word的圖示,你就開始執行的word的程序。執行緒是執行程序中的路徑。另外,乙個過程可以包含多個執行緒。啟動word時,作業系統建立乙個程序並開始執行該程序的主線程。

由於乙個程序可以由多個執行緒,執行緒可以被認為是「輕量級」的過程。因此,乙個執行緒和乙個程序之間的本質區別在於,每乙個用來完成的工作。執行緒用於小任務,而程序用於更多的'重量級'的任務 - 應用基本執行。

乙個執行緒和程序之間的另乙個區別是,在同一程序中的執行緒共享相同的位址空間,而不同的程序沒有。因此執行緒可以讀寫同樣的資料結構和變數,便於執行緒之間的通訊。相反,程序間通訊(ipc)很困難且消耗更多資源。

比如說:乙個老師出了一道題目給乙個同學解答,這個同學可以看成是乙個執行緒,為了解答的更快,再增加乙個同學同時解答,就相當於增加了乙個執行緒,以次類推。而解答的過程就可看成是程序。

5/10:修正一下最後一句

老師出題到同學解答,這整個過程可看成是乙個程序,而不單是解答的過程。

歐陽樂燊

高一公升高二是程序 語數外理化生是 執行緒

知乎使用者:程式設計師

打乙個通俗易懂的比方吧!

比如你去乙個食堂吃飯。裡面有a,b,c,d等一些視窗可以打飯菜或者公尺粉麻辣燙什麼的。

但是每乙個視窗又有打這些菜的師傅。

那麼這些視窗就是程序。

那個那些視窗裡面打菜的師傅就是執行緒。

這個食堂就是系統了。

系統去分配這些程序。

額外補充

協程只不過是同事並行多個任務而已,但是實際上其實是同步執行的,其中乙個任務阻塞,其他的任務必定阻塞。

協程,執行緒,程序,非同步,同步,並行,序列

協程,執行緒,程序,這種是多任務排程的形式,程序歸作業系統管理。

同步,非同步是程式阻塞和非阻塞執行的一種方式。

並行和序列就是任務執行是一起執行還是順序執行。

更比較通俗易懂的

1. 程序: 通俗理解乙個執行起來的程式或者軟體叫做程序

1.1 每次啟動乙個程序都需要向作業系統索要執行資源,讓程序中的執行緒去執行對應的**,程序是作業系統分配資源的基本單位

1.2 預設情況下乙個程序只有乙個執行緒,執行緒是依附在程序裡面的, 沒有程序就沒有執行緒, 當在程序裡面還可以建立多個執行緒

1.3 如何理解程序: 把程序想成現實生活中的公司,公司可以給員工提供辦公資源(辦公桌椅,辦公電腦等資源), 真正幹活的是員工,所以員工可以想成執行緒,公司就是程序

2. 程序和執行緒的對比

2.1 程序是作業系統資源分配的基本單位,每啟動乙個程序都需要向作業系統索要執行資源,預設乙個程序只有乙個執行緒,執行緒是依附在程序裡面的

2.2 執行緒是cpu排程的基本單位, 通過執行緒去執行程序中**, 執行緒是執行**的分支

2.3 多程序開發比單程序多執行緒開發穩定性要強,但是多程序開發比多執行緒開發資源開銷要大

2.4 多程序開發某個程序死了不會影響其它程序的執行,但是多執行緒開發該程序死了那麼這些執行緒都要進行銷毀

併發: 任務數大於cpu的核數,多個任務輪流執行,由於cpu切換速度特別快,看起來像是一起執行,其實是假象。

並行:  任務數小於或者等於cpu的核數,那麼多個任務是真正意義一起執行。

3. 程序、執行緒

1.1 先有程序,然後程序可以建立執行緒,執行緒是依附在程序裡面的, 執行緒裡面可以包含多個協程

1.2 程序之間不共享全域性變數,執行緒之間共享全域性變數,但是要注意資源競爭的問題

1.3 多程序開發比單程序多執行緒開發穩定性要強,但是多程序開發比多執行緒開發資源開銷要大

1.4 多執行緒開發執行緒之間執行是無序的,協程之間執行按照一定順序交替執行

執行緒和程序的區別是什麼?

一 首先來一句概括的總論 程序和執行緒都是乙個時間段的描述,是cpu工作時間段的描述。下面細說背景 cpu ram 各種資源 比如顯示卡,光碟機,鍵盤,gps,等等外設 構成我們的電腦,但是電腦的執行,實際就是cpu和相關暫存器以及ram之間的事情。乙個最最基礎的事實 cpu太快,太快,太快了,暫存...

執行緒和程序的區別是什麼?

首先來一句概括的總論 程序和執行緒都是乙個時間段的描述,是cpu工作時間段的描述。下面細說背景 cpu ram 各種資源 比如顯示卡,光碟機,鍵盤,gps,等等外設 構成我們的電腦,但是電腦的執行,實際就是cpu和相關暫存器以及ram之間的事情。乙個最最基礎的事實 cpu太快,太快,太快了,暫存器僅...

執行緒和程序的區別是什麼?

首先來一句概括的總論 程序和執行緒都是乙個時間段的描述,是cpu工作時間段的描述。下面細說背景 cpu ram 各種資源 比如顯示卡,光碟機,鍵盤,gps,等等外設 構成我們的電腦,但是電腦的執行,實際就是cpu和相關暫存器以及ram之間的事情。乙個最最基礎的事實 cpu太快,太快,太快了,暫存器僅...