進程與線程

定義:

  • 進程:具有一定獨立功能的程序關於某個數據集合上的一次運行活動,是系統進行資源分配和調度的一個獨立單位(可以獨立運行的)
  • 線程:是進程的一個實體,是CPU調度和分派的基本單位,他是比進程更小的能獨立運行的基本單位,線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源,一個線程可以創建和撤銷另一個線程

區別:

  • 一個線程屬於一個進程,而一個進程可以擁有多個線程 , 線程是進程工作的最小單位
  • 一個進程會分配一個地址空間,進程和進程之間不共享地址空間,即:不共享內存
  • 同一個進程下的不同的多個線程,共享父級進程的地址空間
  • 線程在執行過程中,需要協作同步,不同進程的線程要利用消息通信的辦法實現同步
  • 線程作爲調度和分配的基本單位,進程作爲擁有資源的基本單位

進程優點:

  • 每個進程相互獨立,不影響主進程的穩定性,子進程崩潰不影響其他進程
  • 通過這增加CPU,就可以擴充性能
  • 可以儘量減少線程加鎖與解鎖的影響,極大的提高了性能

進程缺點:

  • 邏輯複雜,需要與主程序交互
  • 多進程調度開銷大

線程優點:

  • 程序邏輯和控制方式簡單
  • 所有線程可以直接共享內存和變量等
  • 線程方式消耗的總資源比進程少

線程缺點:

  • 每個線程與主程序公用地址空間,最大內存地址受限
  • 線程之間的同步和加鎖不易控制
  • 一個線程的崩潰可能影響整個程序的穩定性
發佈了57 篇原創文章 · 獲贊 18 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章