程序和執行緒的區別

2022-03-25 15:09:07 字數 636 閱讀 3687

一.最小單位方面

程序是資源分配和管理的最小單元(為什麼不是執行緒呢?因為執行緒自身所帶的資源是不全的,還要用程序中資源)

執行緒是程式執行的最小單元.

二.切換成本

程序在建立時,系統需要給它分配獨立的位址空間,需要用資料表來記錄它的**段,資料段以及堆疊段.當進行執行緒切換時,成本比較高,需要重新整理cache和tlb.

同乙個程序中的執行緒之間共用同乙個位址空間,可以通過全域性變數或者靜態變數來實現資料同步,在切換時成本比較低.

三.通訊方面

程序通訊需要專門的通訊方式,比如管道通訊,訊號量,共享記憶體,套接字(socket),訊息佇列(比如zmq).

執行緒通訊:全域性變數,message訊息機制(windows),事件類(windows)

四.健壯性

因為有獨立的位址空間,乙個程序崩潰後,在保護模式下不會對其他程序產生影響

執行緒有自己的堆疊和區域性變數,但執行緒之間沒有獨立的控制項,所以乙個執行緒出現問題,可能導致整個程式出現問題.

執行緒和程序的區別

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

執行緒和程序的區別

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

執行緒和程序的區別

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