1樓:老男孩教育
二者的聯絡:
一個執行緒可以建立和撤銷另一個執行緒;同一個程序中的多個執行緒之間可以併發執行。
執行緒是一個更加接近於執行體的概念,它可以與同程序中的其他執行緒共享資料,但擁有自己的棧空間,擁有獨立的執行序列。
二者的區別:
主要差別在於它們是不同的作業系統資源管理方式。程序有獨立的地址空間,一個程序崩潰後,在保護模式下不會對其它程序產生影響,而執行緒只是一個程序中的不同執行路徑。
執行緒有自己的堆疊和區域性變數,但執行緒之間沒有單獨的地址空間,一個執行緒死掉就等於整個程序死掉,所以多程序的程式要比多執行緒的程式健壯,但在程序切換時,耗費資源較大,效率要差一些。但對於一些要求同時進行並且又要共享某些變數的併發操作,只能用執行緒,不能用程序。
簡而言之,一個程式至少有一個程序,一個程序至少有一個執行緒。
執行緒的劃分尺度小於程序,使得多執行緒程式的併發性高。
另外,程序在執行過程中擁有獨立的記憶體單元,而多個執行緒共享記憶體,從而極大地提高了程式的執行效率。
執行緒在執行過程中與程序還是有區別的。每個獨立的執行緒有一個程式執行的入口、順序執行序列和程式的出口。但是執行緒不能夠獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制。
從邏輯角度來看,多執行緒的意義在於一個應用程式中,有多個執行部分可以同時執行。但作業系統並沒有將多個執行緒看做多個獨立的應用,來實現程序的排程和管理以及資源分配。這就是程序和執行緒的重要區別。
2樓:匿名使用者
當把程序設計成同一時刻能夠做不止一件事,那麼這些事就可以用執行緒去處理!即多執行緒操作,這個時候要注意共享資料的加鎖,比如全域性變數!
linux中程序和執行緒的對比與區別
3樓:碼農架構
[作業系統]程序和執行緒的區別。
程序和執行緒的區別是什麼?
4樓:小風愛廚房
1、功能不同。
程序是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統結構的基礎。
執行緒是作業系統能夠進行運算排程的最小單位。它被包含在程序之中,是程序中的實際運作單位。
2、工作原理不同。
在早期面向程序設計的計算機結構中,程序是程式的基本執行實體;在當代面向執行緒設計的計算機結構中,程序是執行緒的容器。程式是指令、資料及其組織形式的描述,程序是程式的實體。
執行緒是獨立排程和分派的基本單位。執行緒可以為作業系統核心排程的核心執行緒,如win32執行緒;由使用者程序自行排程的使用者執行緒,如linux平臺的posix thread;或者由核心與使用者程序,如windows 7的執行緒,進行混合排程。
3、作用不同。
程序是作業系統中最基本、重要的概念。是多道程式系統出現後,為了刻畫系統內部出現的動態情況,描述系統內部各道程式的活動規律引進的一個概念,所有多道程式設計作業系統都建立在程序的基礎上。
通常在一個程序中可以包含若干個執行緒,它們可以利用程序所擁有的資源。在引入執行緒的作業系統中,通常都是把程序作為分配資源的基本單位,而把執行緒作為獨立執行和獨立排程的基本單位。
程序的特徵:
1、動態性:程序的實質是程式在多道程式系統中的一次執行過程,程序是動態產生,動態消亡的。
2、併發性:任何程序都可以同其他程序一起併發執行。
3、獨立性:程序是一個能獨立執行的基本單位,同時也是系統分配資源和排程的獨立單位;
4、非同步性:由於程序間的相互制約,使程序具有執行的間斷性,即程序按各自獨立的、不可預知的速度向前推進。
5、結構特徵:程序由程式、資料和程序控制塊三部分組成。
多個不同的程序可以包含相同的程式:一個程式在不同的資料集裡就構成不同的程序,能得到不同的結果;但是執行過程中,程式不能發生改變。
程序和執行緒的區別
5樓:惠企百科
程序和執行緒的區別如下:
1、根本區別。
程序是作業系統資源分配的基本單位,而執行緒是任務排程和執行的基本單位。
2、開銷方面。
程序之間切換開銷大,每個程序都有獨立的**和資料空間程式上下文;執行緒之間切換開銷小,執行緒可以看做輕量級的程序,同一類執行緒共享**和資料空間,每個執行緒都有自己獨立的執行棧和程式計數器pc。
3、所處環境。
在作業系統中能同時執行多個程序程式;而在同一個程序程式中有多個執行緒同時執行通過cpu排程,在每個時間片中只有一個執行緒執行。
4、記憶體分配。
系統為每個程序分配不同的記憶體空間;而對執行緒而言,除cpu外,系統不會為執行緒分配記憶體執行緒所使用的資源來自其所屬程序的資源,執行緒組之間只能共享資源。
5、包含關係。
執行緒是程序的一部分,所以執行緒也被稱為輕權程序或者輕量級程序。
程序與執行緒的區別
6樓:教育手冊
程序與執行緒的區別有開銷不同、所處環境不同、記憶體分配不同等。
每個程序都有獨立的**和資料空間(程式上下文),程式之間的切換會有較大的開銷。執行緒可以看做輕量級的程序,每個執行緒都有自己獨立的執行棧和程式計數器(pc),執行緒之間切換的開銷小。
在作業系統中能同時執行多個程序(程式),而在同一個程序(程式)中有多個執行緒同時執行(通過cpu排程,在每個時間片中只有一個執行緒執行)。
系統在執行的時候會為每個程序分配不同的記憶體空間,對執行緒而言,除了cpu外系統不會為執行緒分配記憶體(執行緒所使用的資源來自其所屬程序的資源),執行緒組之間只能共享資源。
程序與執行緒的關係
程序(process)和執行緒(thread)是作業系統的基本概念,但是它們比較抽象,不容易掌握。計算機的核心是cpu,它承擔了所有的計算任務。它就像一座工廠,時刻在執行。
假定工廠的電力有限,一次只能供給一個車間使用。也就是說,一個車間開工的時候,其他車間都必須停工。背後的含義就是,單個cpu一次只能執行一個任務。
程序就好比工廠的車間,它代表cpu所能處理的單個任務。任一時刻,cpu總是執行一個程序,其他程序處於非執行狀態。一個車間裡,可以有很多工人。
他們協同完成一個任務,執行緒就好比車間裡的工人。一個程序可以包括多個執行緒,車間的空間是工人們共享的,比如許多房間是每個工人都可以進出的。這象徵一個程序的記憶體空間是共享的,每個執行緒都可以使用這些共享記憶體。
c 的執行緒和程序的區別,C 多執行緒多程序問題
執行緒是指程序內的一個執行單元,也是程序內的可排程實體.與程序的區別 1 地址空間 程序內的一個執行單元 程序至少有一個執行緒 它們共享程序的地址空間 而程序有自己獨立的地址空間 2 資源擁有 程序是資源分配和擁有的單位,同一個程序內的執行緒共享程序的資源 3 執行緒是處理器排程的基本單位,但程序不...
請問linux下C程式設計多執行緒同步和非同步的區別,如何能實現程式的同步和非同步程式設計
同步就是使得兩個或者多個程序之間的行為按照一定的時序來執行。比如說執行緒a完成了某件事,然後執行緒b才能做某件事。具體一點,就是,執行緒間的某個動作執行前需要確認一個或者多個其他執行緒的當前狀態。而非同步則是多個執行緒各跑各的,互不干涉。linux下的多執行緒實現由pthread庫提供,標頭檔案為p...
什麼是執行緒 程序和執行緒是什麼意思?
執行緒是指程式的一個指令執行序列,win32 平臺支援多執行緒程式,允許程式中存在多個執行緒。在單 cpu 系統中,系。統把 cpu 的時間片按照排程演算法分配給各個執行緒,因此各執行緒實際上是分時執行的,在多 cpu 的 windows nt 系統中,同一。個程式的不同執行緒可以被分配到不同的 c...