程式和執行緒理解
1.定義
程式是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程式是系統進行資源分配和排程的一個獨立單位.
執行緒是程式的一個實體,是CPU排程和分派的基本單位,它是比程式更小的能獨立執行的基本單位.執行緒自己基本上不擁有系統資源,只擁有一點在執行中必不可少的資源(如程式計數器,一組暫存器和棧),但是它可與同屬一個程式的其他的執行緒共享程式所擁有的全部資源.
2.關係
一個執行緒可以建立和撤銷另一個執行緒;同一個程式中的多個執行緒之間可以併發執行.
相對程式而言,執行緒是一個更加接近於執行體的概念,它可以與同程式中的其他執行緒共享資料,但擁有自己的棧空間,擁有獨立的執行序列。
3.區別
程式和執行緒的主要差別在於它們是不同的作業系統資源管理方式。程式有獨立的地址空間,一個程式崩潰後,在保護模式下不會對其它程式產生影響,而執行緒只是一個程式中的不同執行路徑。執行緒有自己的堆疊和區域性變數,但執行緒之間沒有單獨的地址空間,一個執行緒死掉就等於整個程式死掉,所以多程式的程式要比多執行緒的程式健壯,但在程式切換時,耗費資源較大,效率要差一些。但對於一些要求同時進行並且又要共享某些變數的併發操作,只能用執行緒,不能用程式。
1) 簡而言之,一個程式至少有一個程式,一個程式至少有一個執行緒.
2) 執行緒的劃分尺度小於程式,使得多執行緒程式的併發性高。
3) 另外,程式在執行過程中擁有獨立的記憶體單元,而多個執行緒共享記憶體,從而極大地提高了程式的執行效率。
4) 執行緒在執行過程中與程式還是有區別的。每個獨立的執行緒有一個程式執行的入口、順序執行序列和程式的出口。但是執行緒不能夠獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制。
5) 從邏輯角度來看,多執行緒的意義在於一個應用程式中,有多個執行部分可以同時執行。但作業系統並沒有將多個執行緒看做多個獨立的應用,來實現程式的排程和管理以及資源分配。這就是程式和執行緒的重要區別。
4.優缺點
執行緒和程式在使用上各有優缺點:執行緒執行開銷小,但不利於資源的管理和保護;而程式正相反。同時,執行緒適合於在SMP機器上執行,而程式則可以跨機器遷移。
相關文章
- 多執行緒:執行緒池理解和使用總結執行緒
- 理解作業系統之程式和執行緒作業系統執行緒
- 作業系統——深入理解程式和執行緒作業系統執行緒
- android程式和執行緒Android執行緒
- 程式和執行緒模型執行緒模型
- 如何理解執行緒執行緒
- 理解執行緒同步執行緒
- Java™ 教程(程式和執行緒)Java執行緒
- 漫談程式和執行緒執行緒
- Python 中執行緒和程式Python執行緒
- 程式和執行緒簡介執行緒
- 執行緒和執行緒池執行緒
- 深入理解多執行緒程式設計執行緒程式設計
- 舉例理解什麼是程式,執行緒執行緒
- 目前對程式、執行緒、協程的理解執行緒
- 多執行緒------執行緒與程式/執行緒排程/建立執行緒執行緒
- 程式執行緒篇——程式執行緒基礎執行緒
- 程式,程式,執行緒的最形象理解(理解不了可以直接懟我)執行緒
- 深入理解JVM(③)執行緒與Java的執行緒JVM執行緒Java
- nodejs裡面的程式和執行緒NodeJS執行緒
- 「Learning」區別執行緒和程式執行緒
- 前置知識—程式和執行緒執行緒
- 理解微信小程式的雙執行緒模型微信小程式執行緒模型
- 理解ThreadPoolExecutor執行緒池的corePoolSize、maximumPoolSize和poolSizethread執行緒
- 如何優雅的使用和理解執行緒池執行緒
- 理解JVM(六):執行緒安全和鎖優化JVM執行緒優化
- 詳談執行緒池的理解和應用執行緒
- 程式-程式-執行緒執行緒
- 執行緒和程式基礎以及多執行緒的基本使用(iOS)執行緒iOS
- 多執行緒和多執行緒同步執行緒
- 對程式、執行緒和協程的理解以及它們的區別執行緒
- 深入理解執行緒池的執行流程執行緒
- [短文速讀 -5] 多執行緒程式設計引子:程式、執行緒、執行緒安全執行緒程式設計
- Android程式框架:執行緒與執行緒池Android框架執行緒
- 程式執行緒篇——執行緒切換(上)執行緒
- 程式執行緒篇——執行緒切換(下)執行緒
- 執行緒、執行緒與程式、ULT與KLT執行緒
- 瞭解 Android 的程式和執行緒Android執行緒