面試必問題目“進程、線程對比”,包你會


簡要說明

在C語言、C++等方向面試時,經常會被問道 進程、線程等問題,當然了10年前我剛開始找工作那會,也是各種煎熬“我又不寫操作系統,為什么還要學這么底層的知識”,真想不通面試官是不是sha。。。

轉眼間,我現在成了面試官,你說可笑不。。。。世事變化無常啊。。。。

 

為了讓各位小伙伴把這塊理解了,所以趁一個空閑時機把它們的對比簡單整理了下

我用了通俗易懂的方式來進行描述,希望各位小伙伴能夠看完哦 😃

 

抖擻抖擻精神。。。開始吧。。。

 

1. 通俗理解進程、線程

  • 進程,能夠完成多任務,比如 在一台電腦上能夠同時運行多個QQ
  • 線程,能夠完成多任務,比如 一個QQ中的多個聊天窗口

1.1 定義的不同

  • 進程是系統進行資源分配和調度的一個獨立單位.

  • 線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位.線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源.

1.2 區別

  • 一個程序至少有一個進程,一個進程至少有一個線程.
  • 線程的划分尺度小於進程(資源比進程少),使得多線程程序的並發性高。
  • 進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大地提高了程序的運行效率
  •  
  • 線線程不能夠獨立執行,必須依存在進程中
  • 可以將進程理解為工廠中的一條流水線,而其中的線程就是這個流水線上的工人
  •  

1.3 優缺點

線程和進程在使用上各有優缺點:線程執行開銷小,但不利於資源的管理和保護;而進程正相反。

 

2. 通俗理解進程、線程

計算機的核心是CPU,它承擔了所有的計算任務。它就像一座工廠,時刻在運行。

 

 image-20181214105041755

 

假定工廠的電力有限,一次只能供給一個車間使用。也就是說,一個車間開工的時候,其他車間都必須停工。背后的含義就是,單個CPU一次只能運行一個任務。

​ image-20181214105140348

進程就好比工廠的車間,它代表CPU所能處理的單個任務。任一時刻,CPU總是運行一個進程,其他進程處於非運行狀態。

image-20181214105217583

一個車間里,可以有很多工人。他們協同完成一個任務。

image-20181214105251709

線程就好比車間里的工人。一個進程可以包括多個線程。

image-20181214105325618

車間的空間是工人們共享的,比如許多房間是每個工人都可以進出的。這象征一個進程的內存空間是共享的,每個線程都可以使用這些共享內存。

image-20181214105353973

 

 

相信通過上面的通俗描述,你已經掌握了它們之間的區別

注意

1. 不要死記硬背,沒有用

2. 一般來講底層開發用到進程等操作,而如果編寫應用層,幾乎用不到,像js、html、css等那些語言

3. 一些其他的編程語言,像Python 除了上面說的進程、線程之外,還有協程,這個以后咱們有機會再說

4. 如果你還不知道Python怎樣通過進程、線程 實現多任務編程,請參考http://books.howdoit.cn/004-MultiProcess/01day/01-%E5%BC%95%E5%85%A5%E5%A4%9A%E4%BB%BB%E5%8A%A1.html

 

我的博客:https://www.cnblogs.com/dong4716138/ 歡迎關注

我的網站:http://howdoit.cn/ 歡迎添加到書簽

 

最后的建議:

學會學習,要比學會某個知識點要強,學習編程的人那么多,為什么有那么多人干1、2年就不干了,寫helloworld 誰不會!知道在哪寫,寫什么 這個才是重點

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM