1. 程式人生 > 其它 >執行緒和程序有什麼區別

執行緒和程序有什麼區別

一、執行緒的基本概念
執行緒是程序中執行運算的最小單位,是程序中的一個實體,是被系統獨立排程和分派的基本單位,執行緒自己不擁有系統資源,只擁有一點在執行中必不可少的資源,但它可與同屬一個程序的其它執行緒共享程序所擁有的全部資源。一個執行緒可以建立和撤消另一個執行緒,同一程序中的多個執行緒之間可以併發執行。

 好處 :(1)易於排程。

               (2)提高併發性。通過執行緒可方便有效地實現併發性。程序可建立多個執行緒來執行同一程式的不同部分。

               (3)開銷少。建立執行緒比建立程序要快,所需開銷很少。。

               (4)利於充分發揮多處理器的功能。通過建立多執行緒程序,每個執行緒在一個處理器上執行,從而實現應用程式的併發性,使每個處理器都得到充分執行

二、程序與執行緒
程序:每個程序都有獨立的程式碼和資料空間(程序上下文),程序間的切換會有較大的開銷,一個程序包含1--n個執行緒。(程序是資源分配的最小單位)
執行緒:同一類執行緒共享程式碼和資料空間,每個執行緒有獨立的執行棧和程式計數器(PC),執行緒切換開銷小。(執行緒是cpu排程的最小單位)

多程序是指作業系統能同時執行多個任務(程式)。  多執行緒是指在同一程式中有多個順序流在執行。

三、程序與執行緒的區別:


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

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

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

 (4)系統開銷:在建立或撤消程序時,由於系統都要為之分配和回收資源,導致系統的開銷明顯大於建立或撤消執行緒時的開銷

四、程序和執行緒的關係:
  (1)一個執行緒只能屬於一個程序,而一個程序可以有多個執行緒,但至少有一個執行緒。

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

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

  (4)執行緒在執行過程中,需要協作同步。不同程序的執行緒間要利用訊息通訊的辦法實現同步。執行緒是指程序內的一個執行單元,也是程序內的可排程實體.

五、多執行緒的優點
     使用執行緒可以把佔據時間長的程式中的任務放到後臺去處理
     使用者介面可以更加吸引人,這樣比如使用者點選了一個按鈕去觸發某些事件的處理,可以彈出一個進度條來顯示處理的進度
     程式的執行速度可能加快
     在一些等待的任務實現上如使用者輸入、檔案讀寫和網路收發資料等,執行緒就比較有用了。在這種情況下可以釋放一些珍貴的資源如記憶體佔用等等。
     多執行緒技術在IOS軟體開發中也有舉足輕重的位置。

六、多執行緒的缺點

  如果有大量的執行緒,會影響效能,因為作業系統需要在它們之間切換。

  更多的執行緒需要更多的記憶體空間。

  執行緒可能會給程式帶來更多“bug”,因此要小心使用。

  執行緒的中止需要考慮其對程式執行的影響。

  通常塊模型資料是在多個執行緒間共享的,需要防止執行緒死鎖情況的發生

執行緒和程序的區別在於,子程序和父程序有不同的程式碼和資料空間,而多個執行緒則共享資料空間,每個執行緒有自己的執行堆疊和程式計數器為其執行上下文.多執行緒主要是為了節約CPU時間,發揮利用,根據具體情況而定. 執行緒的執行中需要使用計算機的記憶體資源和CPU。

轉載:https://blog.csdn.net/weixin_42981419/article/details/86162071