執行緒和程序的比較
阿新 • • 發佈:2022-05-19
執行緒與程序的比較如下:
- 程序是資源(包括記憶體、開啟的檔案等)分配的單位,執行緒是 CPU 排程的單位;
- 程序擁有一個完整的資源平臺,而執行緒只獨享必不可少的資源,如暫存器和棧;
- 執行緒同樣具有就緒、阻塞、執行三種基本狀態,同樣具有狀態之間的轉換關係;
- 執行緒能減少併發執行的時間和空間開銷;
對於,執行緒相比程序能減少開銷,體現在:
- 執行緒的建立時間比程序快,因為程序在建立的過程中,還需要資源管理資訊,比如記憶體管理資訊、檔案管理資訊,而執行緒在建立的過程中,不會涉及這些資源管理資訊,而是共享它們;
- 執行緒的終止時間比程序快,因為執行緒釋放的資源相比程序少很多;
- 同一個程序內的執行緒切換比程序切換快,因為執行緒具有相同的地址空間(虛擬記憶體共享),這意味著同一個程序的執行緒都具有同一個頁表,那麼在切換的時候不需要切換頁表。而對於程序之間的切換,切換的時候要把頁表給切換掉,而頁表的切換過程開銷是比較大的;
- 由於同一程序的各執行緒間共享記憶體和檔案資源,那麼線上程之間資料傳遞的時候,就不需要經過核心了,這就使得執行緒之間的資料互動效率更高了;
所以,不管是時間效率,還是空間效率執行緒比程序都要高。