Linux中程式和執行緒的區別與聯絡,建議收藏!

老男孩IT教育機構發表於2022-09-06

  程式和執行緒這兩個話題是程式設計師無法繞開的,而且已經成為IT界經常討論且熱度不減的話題,那麼Linux中程式和執行緒有什麼區別和聯絡?小編透過這篇文章為大家講解一下,希望對你們有用。

  聯絡:

  ①一個執行緒可以建立和撤銷另一個執行緒;同一個程式中的多個執行緒之間可以併發執行;

  ②相對程式而言,執行緒是一個更加接近於執行體的概念,它可以與同程式中的其他執行緒共享資料,但擁有自己的棧空間,擁有獨立的執行序列。

  區別:

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

  簡而言之,一個程式至少有一個程式,一個程式至少有一個執行緒。

  執行緒的劃分尺度小於程式,使得多執行緒程式的併發性高。

  另外,程式在執行過程中擁有獨立的記憶體單元,而多個執行緒共享記憶體,從而極大地提高了程式的執行效率。

  執行緒在執行過程中與程式還是有區別的,每個獨立的執行緒有一個程式執行的入口、順序執行序列和程式的出口。但是執行緒不能夠獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制。

  從邏輯角度來看,多執行緒的意義在於一個應用程式中,有多個執行部分可以同時執行。但作業系統並沒有將多個執行緒看做多個獨立的應用,來實現程式的排程和管理以及資源分配。這就是程式和執行緒的重要區別。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952527/viewspace-2913603/,如需轉載,請註明出處,否則將追究法律責任。

相關文章