程序和執行緒的區別

2021-10-04 20:27:32 字數 703 閱讀 2869

1》為啥會有程序,因為作業系統是對程序進行操作的,而執行緒是由cpu進性實際排程的

所以程序是作業系統分配資源的基本單位,執行緒是cpu排程和分派的基本單位。

2》乙個程序中可以包含多個執行緒,並且執行緒共享整個程序的資源(暫存器、堆疊、上下文),乙個程序至少包含乙個執行緒

3》程序的建立呼叫fork或者vfork,而執行緒的建立呼叫pthread_create,程序結束後它擁有的所有執行緒都將銷毀,

而執行緒的結束不會影響同個程序中的其他執行緒的結束

4》執行緒是輕量級的程序,它的建立和銷毀所需要的時間比程序小很多,執行緒間的切換比程序小很多

5》執行緒中執行時一般都要進行同步和互斥,因為他們共享同一程序的所有資源。

6》執行緒有自己的私有屬性(執行緒控制塊)tcb,執行緒id,暫存器、硬體上下文,而程序也有自己的私有屬性程序控制塊pcb,

這些私有屬性是不被共享的,用來標示乙個程序或乙個執行緒的標誌。

7》每個執行緒都有自己的私有棧,但是沒有單獨的堆,也沒有單獨的位址空間,程序也有自己的棧(想象那個虛擬位址空間,裡面有堆和棧,虛擬空間之外是非法位址,當乙個執行緒向非法位址讀取或者寫入,無法確認這個操作是否會影響同一程序中的其他執行緒,所以只能是整個程序一起崩潰)。這一條可以看:

補充的還可以看:

執行緒池和程序池

執行緒和程序的區別

易於排程。執行緒切換比程序切換要快。虛擬記憶體空間,io裝置等 開銷小。建立執行緒比建立進行要快,所需開銷小。進展用少量資源,如棧和暫存器。提高併發性。程序可以建立多個執行緒來執行統一程式的不同任務。有利於充分發揮多處理器的功能。通過建立多執行緒的程序,每個執行緒在乙個處理器上執行,從而實現了應用程...

執行緒和程序的區別

這個問題我查了不下4次,每次都是突然想到查一下,當時明白,完了又會混淆 首先我們知道 程序 執行緒 執行緒 在乙個程式裡面的多個任務,比如賣票系統,他有退票和賣票的功能,我們就可以給他稱之為執行緒。程序 我們開啟任務管理器可以看到的是我們在系統上執行的程式稱之為執行緒 總之,乙個程式必須有乙個程序,...

執行緒和程序的區別

1.計算機的核心是cpu,它承擔了所有的計算任務。它就像一座工廠,時刻在執行。2.假定工廠的電力有限,一次只能供給乙個車間使用。也就是說,乙個車間開工的時候,其他車間都必須停工。背後的含義就是,單個cpu一次只能執行乙個任務。3.程序就好比工廠的車間,它代表cpu所能處理的單個任務。任一時刻,cpu...