進程和線程?你確定你真的弄懂了嗎?

進程和線程只有一字之差,看得快(一目十行)的同學可能一下子就忽略過去了。感覺他們像孿生兄弟一樣。進程=線程?好像這兩兄弟也差不多吧?如果你真這麼想的話,恭喜你,你需要學習了。

什麼是進程

進程是程序處理機器上的一次執行的過程,它是系統進行資源分配和調度的一個獨立的單位。如果你的PC的Windows 10的話,你空白處右鍵-任務管理器。第一個列表就是進程了。它是一個獨立程序執行體(簡單說你雙擊點開的任何一個程序在任務管理器中都是一個進程)。

什麼是線程

線程是進程的一個實體,它是比進程更小的一個能獨立運行的存在。線程擁有的資源很少,它和同一個進程中的其他線程共享進程的資源。簡單點來講,線程是不能獨立於進程存在的。它呢永遠是進程的一份子。

 

差異總結

地址空間差異

同一進程的線程共享本進程的地址空間,而進程之間則是獨立的地址空間。資源共享差異

(一家有多口人,但是最後還是住在一起的。每家人的住址都是不一樣的)

同一進程內的線程共享本進程的資源,但是進程之間的資源是獨立的

(不是一家人不進一家門,好東西要一家人共享的。別人家的東西能免費共享嗎?娃哈哈!)

健壯性差異

一個進程崩潰後,在保護模式下不會對其他進程產生影響,一個線程崩潰整個進程都死掉,所以多進程要比多線程健壯。

(想想現在新冠,一人得病,一家人都要被殃及,但是樓下的沒啥事呀!照樣的折騰!)

資源消耗差異

進程切換時,消耗的資源大,效率高。所以涉及到頻繁的切換時,使用線程要好於進程。同樣如果要求同時進行並且又要共享某些變量的併發操作,只能用線程不能用進程;

(這就是爲什麼現在多線程併發編程火熱的原因了!沒辦法現在地球人太多了!)

執行差異

每個獨立的進程有一個程序運行的入口、順序執行序列和程序出口。線程必須依存在進程中。

(每家的大門都只有那麼一個,如果有意見,另外賣新房子呀!)

大小差異

線程是處理器調度的基本單位,但是進程不是。

(一個人是不能再拆了,但是一家人可以分成幾個人)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章