天天看點

程序和線程的基本特點和差別

幾乎所有的作業系統都支援同時運作多個任務,一個任務通常就是一個程式,每個運作中的程式就是一個程序。

當一個程式運作時,内部可能包含了多個順序執行流,每個順序執行流就是一個線程。

1、程序

程序是處于運作中的程式,具有一定的獨立能力,是系統進行資源配置設定和排程的一個獨立機關。

程序的特點:

  • 獨立性
    • 獨立存在的實體,擁有自己獨立的資源,擁有自己的私有位址;
    • 在沒有經過程序本身允許的情況下,一個使用者程序不能通路其它程序位址空間。
  • 動态性
    • 程式隻是一個靜态的指令集合,而程序是一個正在系統中活動的指令集合;
    • 程序在程式中加入了時間概念,具有自己的生命周期和各種不同的狀态。
  • 并發性
    • 多個程序可以在單個處理器上并發執行,不會互相影響。

2、線程

線程是程序的執行單元,也稱為輕量級程序。

就像程序在作業系統中的地位一樣,線程在程式中是獨立、并發執行流,當程序被初始化後,主線程就被建立。

線程的特點:

  • 線程是程序的組成部分,一個線程必須有一個父程序,一個程序可以擁有多個線程;
  • 一個程式運作後至少有一個程序,一個程序至少包含一個線程;
  • 線程可以擁有自己的堆、棧、局部變量,但不能擁有系統資源。
  • 多個線程共享父程序的全部資源,互相之間協作共同完成程序所要完成的任務;

3、多線程

多線程的運作方式:

  • 線程是獨立運作的,它并不知道程序中是否還有其它線程存在;
  • 線程的執行是搶占式的,目前運作的線程在任何時候都可以被扶起,以便其它線程運作;
  • 一個線程可以建立和撤銷另一個線程,同一個程序中的多個線程可并發執行;
  • 多線程擴充了多程序,使同一個程序可以同時并發處理多個任務。

多線程的優點:

  • 程序之間不能共享記憶體,但線程之間共享記憶體很容易;
  • 系統建立程序需要重新配置設定系統資源、記憶體空間,但建立線程則很簡單,是以用多線程來實作多任務并發比多程序效率高;

繼續閱讀