1. 程式人生 > >程序與執行緒的區別和聯絡以及優缺點

程序與執行緒的區別和聯絡以及優缺點

什麼是執行緒?

-在一個程式裡的一個執行路線就叫做執行緒。更準確的定義是:執行緒是“一個程序內部的控制序列”。

-一切程序至少都有一個執行執行緒

-執行緒也被叫做輕量級程序

什麼是程序?

-程序是程式的一個執行的例項。

-程序是正在執行的程式。

-程序是能分配處理器並由處理器執行的實體。

程序和執行緒

-程序是資源競爭的基本單位

-執行緒是程式執行的最小單位

聯絡:程序和執行緒都是作業系統所執行的程式執行的基本單元。

區別:

-程序具有獨立的空間地址,一個程序崩潰後,在保護模式下不會對其他程序產生影響。

-執行緒只是一個程序的不同執行路徑,執行緒有自己的堆疊和區域性變數,但執行緒之間沒有單獨的地址空間,一個執行緒死掉就等於整個程序死掉。

程序的優點:

提供了多道程式設計,提高計算機CPU的利用率。多道程式設計的理解:可以將多個程序同時載入到記憶體中,在作業系統的排程下,可以實現併發的執行。這樣就可以提供了CPU的利用率。

程序的缺點:

-程序只能在一個時間內執行一件事,如果想執行多件事,程序就無能為力了。

-程序在執行的過程中如果堵塞,例如等待使用者輸入資訊,整個程序就會掛起,即使程序中有些工作不依賴輸入的資料,也將無法執行。

執行緒的優點:

-建立一個新執行緒的代價要比建立一個新程序小的多

-與程序之間的切換相比,執行緒之間的切換需要作業系統做的工作要少很多

-執行緒佔用的資源要比程序少很多

-能充分利用多處理器的可並行數量

-在等待慢速I/O操作結束的同時,程式可執行其他的計算任務

-計算密集型應用,為了能在多處理器系統上執行,將計算分解到多個執行緒中實現

-I/O密集型應用,為了提高效能,將I/O操作重疊。執行緒可以同時等待不同的I/O操作

執行緒的缺點:

-效能損失

-健壯性降低

-缺乏訪問控制

-程式設計難度提高