1. 程式人生 > 其它 >執行緒和程序的比較

執行緒和程序的比較

 

執行緒與程序的比較如下:

  • 程序是資源(包括記憶體、開啟的檔案等)分配的單位,執行緒是 CPU 排程的單位;
  • 程序擁有一個完整的資源平臺,而執行緒只獨享必不可少的資源,如暫存器和棧;
  • 執行緒同樣具有就緒、阻塞、執行三種基本狀態,同樣具有狀態之間的轉換關係;
  • 執行緒能減少併發執行的時間和空間開銷;

對於,執行緒相比程序能減少開銷,體現在:

  • 執行緒的建立時間比程序快,因為程序在建立的過程中,還需要資源管理資訊,比如記憶體管理資訊、檔案管理資訊,而執行緒在建立的過程中,不會涉及這些資源管理資訊,而是共享它們;
  • 執行緒的終止時間比程序快,因為執行緒釋放的資源相比程序少很多;
  • 同一個程序內的執行緒切換比程序切換快,因為執行緒具有相同的地址空間(虛擬記憶體共享),這意味著同一個程序的執行緒都具有同一個頁表,那麼在切換的時候不需要切換頁表。而對於程序之間的切換,切換的時候要把頁表給切換掉,而頁表的切換過程開銷是比較大的;
  • 由於同一程序的各執行緒間共享記憶體和檔案資源,那麼線上程之間資料傳遞的時候,就不需要經過核心了,這就使得執行緒之間的資料互動效率更高了;

所以,不管是時間效率,還是空間效率執行緒比程序都要高。