1. 程式人生 > >執行緒和程序的區別及優缺點:

執行緒和程序的區別及優缺點:

執行緒和程序的區別:

  1)程序是具有一定獨立功能的程式,關於某個資料集合上的一次執行活動,程序是系統進行資源分配和排程的一個獨立單位;

  2)執行緒是程序的一個實體,是CPU排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位。執行緒自己基本上不擁有系統資源,只擁有一點在執行中必不可少的資源(程式的計數器、一組暫存器和棧),但是它可以同屬一個進場的其他的執行緒共享程序所擁有的全部資源;

  3)一個執行緒可以建立和撤銷另一個執行緒,同一個程序中的多個執行緒之間可以併發執行;


  程序和執行緒的主要差別在於他們是不同的作業系統資源管理方式。程序有獨立的地址空間,一個程序奔潰後,在保護模式下不會對其他程序產生影響,而執行緒只是一個程序中的不同執行路徑。執行緒有自己的堆疊和區域性變數,但執行緒之間沒有單獨的地址空間,一個執行緒死掉就等於整個程序死掉,所以多程序的程式要比多執行緒的程式健壯,但在程序切換時,耗費資源較大,效率要差一些。但對於一些要求同時進行並且又要共享某些變數的併發操作,只能用執行緒,不能用程序。

  程序的優點:

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

  1)程序只能在一個時間內執行一件事,如果想同時執行兩件事或者多件事,程序就無能為力了;

  2)程序在執行的過程中如果阻塞,例如等待使用者輸入資訊,整個程序就會掛起,即使程序中有些工作不依賴輸入的資料,也將無法執行。
  執行緒的優點:提高程序的併發度可以有效的利用多處理器和多核計算機。
  執行緒的缺點:但同屬於某個程序下的執行緒不可預知的原因導致死掉就會導致整個程序奔潰。