0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

線程、進程、多線程、多進程和多任務(wù)之間有何關(guān)系?

單片機與嵌入式 ? 來源:stranger huang ? 2024-01-11 13:39 ? 次閱讀

首先,從定義開始,先看一下教科書上 進程和線程定義:

進程:資源分配的最小單位。

線程:程序執(zhí)行的最小單位。

心中默念,啥啥啥,寫的這是啥。

1

進程

進程是程序執(zhí)行時的一個實例,即它是程序已經(jīng)執(zhí)行到課中程度的數(shù)據(jù)結(jié)構(gòu)的匯集。從內(nèi)核的觀點看,進程的目的就是擔(dān)當(dāng)分配系統(tǒng)資源(CPU時間、內(nèi)存等)的基本單位。

舉例說明進程:

想象一位有一手好廚藝的計算機科學(xué)家正在為他的女兒烘制生日蛋糕。他有做生日蛋糕的食譜,廚房里有所需的原料:面粉、雞蛋、糖、香草汁等。在這個比喻中,做蛋糕的食譜就是程序(即用適當(dāng)形式描述的算法)計算機科學(xué)家就是處理器(CPU),而做蛋糕的各種原料就是輸入數(shù)據(jù)。進程就是廚師閱讀食譜、取來各種原料以及烘制蛋糕等一系列動作的總和?,F(xiàn)在假設(shè)計算機科學(xué)家的兒子哭著跑了進來,說他的頭被一只蜜蜂蟄了。計算機科學(xué)家就記錄下他照著食譜做到哪兒了(保存進程的當(dāng)前狀態(tài)),然后拿出一本急救手冊,按照其中的指示處理蟄傷。這里,我們看到處理機制是從一個進程(做蛋糕)切換到另一個高優(yōu)先級的進程(實施醫(yī)療救治),每個進程擁有各自的程序(食譜和急救手冊)。當(dāng)蜜蜂蟄傷處理完之后,這位計算機科學(xué)家又回來做蛋糕,從他離開時的那一步繼續(xù)做下去。

2

線程

線程是CPU調(diào)度的最小單位(程序執(zhí)行流的最小單元),它被包含在進程之中,是進程中的實際運作單元。一條線程是進程中一個單一順序的控制流,一個進程中可以并發(fā)多個線程,每條線程并行執(zhí)行不同的任務(wù)。

一個標準的線程有線程ID、當(dāng)前指令指針(PC),寄存器集合和堆棧組成。另外,線程是進程中的一個實體,是被系統(tǒng)獨立調(diào)度和分派的基本單元,線程自己不擁有系統(tǒng)資源,只擁有一點兒在運行中必不可少的資源,但它可與同屬一個進程的其他線程共享進程所擁有的全部資源。一個線程可以創(chuàng)建和撤銷另一個線程,同一進程中的多個線程之間可以并發(fā)執(zhí)行。由于線程之間的相互制約,致使線程在運行中呈現(xiàn)處間斷性。

線程也有就緒、阻塞和運行三種基本狀態(tài)。就緒狀態(tài)是指線程具備運行的所有條件,邏輯上可以運行,在等待處理機;運行狀態(tài)是指線程占有處理機正在運行;阻塞狀態(tài)是指線程在等待一個事件(如某個信號量),邏輯上不可執(zhí)行。每一個程序都至少有一個線程,若程序只有一個線程,那就是程序本身。

舉例說明線程:

假設(shè),一個文本程序,需要接受鍵盤輸入,將內(nèi)容顯示在屏幕上,還需要保存信息到硬盤中。若只有一個進程,勢必造成同一時間只能干一樣事的尷尬(當(dāng)保存時,就不能通過鍵盤輸入內(nèi)容)。若有多個進程,每個進程負責(zé)一個任務(wù),進程A負責(zé)接收鍵盤輸入的任務(wù),進程B負責(zé)將內(nèi)容顯示在屏幕上的任務(wù),進程C負責(zé)保存內(nèi)容到硬盤中的任務(wù)。這里進程A,B,C間的協(xié)作涉及到了進程通信問題,而且有共同都需要擁有的東西——-文本內(nèi)容,不停的切換造成性能上的損失。若有一種機制,可以使任務(wù)A,B,C共享資源,這樣上下文切換所需要保存和恢復(fù)的內(nèi)容就少了,同時又可以減少通信所帶來的性能損耗,那就好了。這種機制就是線程。

總的來說:進程有獨立的地址空間,線程沒有單獨的地址空間(同一進程內(nèi)的線程共享進程的地址空間)。

3

多線程

進程是程序在計算機上的一次執(zhí)行活動。當(dāng)你運行一個程序,你就啟動了一個進程。顯然,程序是死的(靜態(tài)的),進程是活的(動態(tài)的)。進程可以分為系統(tǒng)進程和用戶進程。凡是用于完成操作系統(tǒng)的各種功能的進程就是系統(tǒng)進程,它們就是處于運行狀態(tài)下的操作系統(tǒng)本身;所有由用戶啟動的進程都是用戶進程。進程是操作系統(tǒng)進行資源分配的單位。進程又被細化為線程,也就是一個進程下有多個能獨立運行的更小的單位。在同一個時間里,同一個計算機系統(tǒng)中如果允許兩個或兩個以上的進程處于運行狀態(tài),這便是多任務(wù)。現(xiàn)代的操作系統(tǒng)幾乎都是多任務(wù)操作系統(tǒng),能夠同時管理多個進程的運行。多任務(wù)帶來的好處是明顯的,比如你可以邊聽網(wǎng)易云音樂,一邊上網(wǎng),與此同時甚至可以將下載的文檔打印出來,而這些任務(wù)之間絲毫不會相互干擾。那么這里就涉及到并行的問題,俗話說,一心不能二用,這對計算機也一樣,原則上一個CPU只能分配給一個進程,以便運行這個進程。我們通常使用的計算機中只有一個CPU,也就是說只有一顆心,要讓它一心多用,同時運行多個進程,就必須使用并發(fā)技術(shù)。實現(xiàn)并發(fā)技術(shù)相當(dāng)復(fù)雜,最容易理解的是“時間片輪轉(zhuǎn)進程調(diào)度算法”,它的思想簡單介紹如下:在操作系統(tǒng)的管理下,所有正在運行的進程輪流使用CPU,每個進程允許占用CPU的時間非常短(比如10毫秒),這樣用戶根本感覺不出來 CPU是在輪流為多個進程服務(wù),就好像所有的進程都在不間斷地運行一樣。但實際上在任何一個時間內(nèi)有且僅有一個進程占有CPU。如果一臺計算機有多個CPU,情況就不同了,如果進程數(shù)小于CPU數(shù),則不同的進程可以分配給不同的CPU來運行,這樣,多個進程就是真正同時運行的,這便是并行。

并行處理(Parallel Processing)是計算機系統(tǒng)中能同時執(zhí)行兩個或更多個處理的一種計算方法。并行處理可同時工作于同一程序的不同方面。并行處理的主要目的是節(jié)省大型和復(fù)雜問題的解決時間。并發(fā)處理(concurrency Processing):指一個時間段中有幾個程序都處于已啟動運行到運行完畢之間,且這幾個程序都是在同一個處理機(CPU)上運行,但任一個時刻點上只有一個程序在處理機(CPU)上運行

并發(fā)的關(guān)鍵是你有處理多個任務(wù)的能力,不一定要同時。并行的關(guān)鍵是你有同時處理多個任務(wù)的能力。所以說,并行是并發(fā)的子集。

wKgZomWff5GAFy6-AADDu-OFdTw111.jpg

4

多線程

線程是程序中一個單一的順序控制流程。進程內(nèi)一個相對獨立的、可調(diào)度的執(zhí)行單元,是系統(tǒng)獨立調(diào)度和分派CPU的基本單元。在單一程序中同時運行多個想成完成不同的工作,稱為多線程。

多線程是為了使得多個線程并行的工作以完成多項任務(wù),以提高系統(tǒng)的效率。線程是在同一時間需要完成多項任務(wù)的時候被實現(xiàn)的。

打個比方:

多進程是立體交通系統(tǒng)(近似于立交橋),雖然造價高,上坡下坡多耗點油,但是不堵車。

多線程是平面交通系統(tǒng),造價低,但紅綠燈太多,老堵車。

5

線程與進程的關(guān)系

(1)一個線程只能屬于一個進程,而一個進程可以有多個線程,但至少有一個線程;

(2)資源分配給進程,同一進程內(nèi)的所有線程共享該進程的所有資源;

(3)線程在執(zhí)行過程中需要協(xié)作同步。不同進程中的線程之間要利用消息通信的方法實現(xiàn)同步;

(4)處理機分配給線程,即真正在處理機上運行的是線程;

(5)線程是進程的一個執(zhí)行單元,也是進程內(nèi)的可調(diào)用實體。

wKgZomWff5GAR-hwAABnOFiDsws569.jpg

6

線程和進程的區(qū)別

(1)線程共享內(nèi)存空間;進程的內(nèi)存是獨立的;

(2)同一個進程的線程之間可以直接交流;兩個進程想通信,必須通過一個中間代理來實現(xiàn);

(3)創(chuàng)建新進程很簡單;創(chuàng)建新進程需要對其父進程進行一個克隆;

(4)一個線程可以控制和操作同一進程里的其他線程;但是進程只能操作子進程;

(5)改變注線程(如優(yōu)先權(quán)),可能會影響其他線程;改變父進程,不影響子進程。

(6)調(diào)度:線程作為分配和調(diào)度的基本單位,進程作為擁有資源的基本單位

(7)并發(fā)性:不進進程之間可以并發(fā)執(zhí)行,同一進程內(nèi)的線程也可以并發(fā)執(zhí)行

(8)擁有資源:進程是擁有資源的一個獨立單位,線程不擁有系統(tǒng)資源,但是可以訪問隸屬于進程的系統(tǒng)資源

(9)系統(tǒng)開銷:在創(chuàng)建和撤銷進程的時候,系統(tǒng)都要分配和回收資源,導(dǎo)致系統(tǒng)的明顯大于創(chuàng)建和撤銷線程時的開銷。但進程有獨立的地址空間,進程崩潰后,在保護模式的下不會對其他進程造成影響,而線程只是進程中的不同執(zhí)行路徑。線程有自己的堆棧和局部變量,但線程之間沒有獨立的地址空間,一個線程死后就等于整個進程死掉,所以多進程程序要比多線程程序健壯,但是在進程切換的時候消耗的資源較大,效率差。

根本區(qū)別就一點:用多進程每個進程有自己的地址空間(address space),線程則共享地址空間。

總結(jié):多線程執(zhí)行效率高; 多進程耗資源,安全。

7

進程的優(yōu)缺點

7.1 進程的優(yōu)點

1)順序程序的特點:具有封閉性和可再現(xiàn)性;

2)程序的并發(fā)執(zhí)行和資源共享。多道程序設(shè)計出現(xiàn)后,實現(xiàn)了程序的并發(fā)執(zhí)行和資源共享,提高了系統(tǒng)的效率和系統(tǒng)的資源利用率。

7.2 進程的缺點

操作系統(tǒng)調(diào)度切換多個線程要比切換調(diào)度進程在速度上快的多。而且進程間內(nèi)存無法共享,通訊也比較麻煩。線程之間由于共享進程內(nèi)存空間,所以交換數(shù)據(jù)非常方便;在創(chuàng)建或撤消進程時,由于系統(tǒng)都要為之分配和回收資源,導(dǎo)致系統(tǒng)的開銷明顯大于創(chuàng)建或撤消線程時的開銷。

8

線程的優(yōu)缺點

8.1 線程的優(yōu)點

1)它是一種非常"節(jié)儉"的多任務(wù)操作方式。在Linux系統(tǒng)下,啟動一個新的進程必須分配給它獨立的地址空間,建立眾多的數(shù)據(jù)表來維護它的代碼 段、堆棧段和數(shù)據(jù)段,這是一種"昂貴"的多任務(wù)工作方式。而運行于一個進程中的多個線程,它們彼此之間使用相同的地址空間,共享大部分數(shù)據(jù),啟動一個線程 所花費的空間遠遠小于啟動一個進程所花費的空間,而且,線程間彼此切換所需的時間也遠遠小于進程間切換所需要的時間。當(dāng)然,在具體的系統(tǒng)上,這個數(shù)據(jù)可能 會有較大的區(qū)別;

2)線程間方便的通信機制,由于同一進程下的線程之間共享數(shù)據(jù)空間,所以一個線程的數(shù)據(jù)可以直接為其它線程所用,這不僅快捷,而且方便;

3)使多CPU系統(tǒng)更加有效。操作系統(tǒng)會保證當(dāng)線程數(shù)不大于CPU數(shù)目時,不同的線程運行于不同的CPU上;

4)改善程序結(jié)構(gòu)。一個既長又復(fù)雜的進程可以考慮分為多個線程,成為幾個獨立或半獨立的運行部分,這樣的程序會利于理解和修改。

8.2 線程的缺點

1)調(diào)度時, 要保存線程狀態(tài),頻繁調(diào)度,需要占用大量的機時;

2)程序設(shè)計上容易出錯(線程同步問題)。

9

多線程的優(yōu)缺點

9.1 多線程的優(yōu)點

1)無需跨進程邊界;程序邏輯和控制方式簡單;

2)所有線程可以直接共享內(nèi)存和變量等;

3)線程方式消耗的總資源比進程方式好。

9.2 多線程的缺點

1)每個線程與主程序共用地址空間,受限于2GB地址空間;

2)線程之間的同步和加鎖控制比較麻煩;一個線程的崩潰可能影響到整個程序的穩(wěn)定性;

3)到達一定的線程數(shù)程度后,即使再增加CPU也無法提高性能,例如Windows Server 2003,大約是1500個左右的線程數(shù)就快到極限了(線程堆棧設(shè)定為1M),如果設(shè)定線程堆棧為2M,還達不到1500個線程總數(shù);

4)線程能夠提高的總性能有限,而且線程多了之后,線程本身的調(diào)度也是一個麻煩事兒,需要消耗較多的CPU 。

10

多進程的優(yōu)缺點

10.1 多進程的優(yōu)點

1)每個進程互相獨立,不影響主程序的穩(wěn)定性,子進程崩潰沒關(guān)系;

2)通過增加CPU,就可以容易擴充性能;

3)可以盡量減少線程加鎖/解鎖的影響,極大提高性能,就算是線程運行的模塊算法效率低也沒關(guān)系;

4)每個子進程都有2GB地址空間和相關(guān)資源,總體能夠達到的性能上限非常大。

10.2 多進程的缺點

1)邏輯控制復(fù)雜,需要和主程序交互;

2)需要跨進程邊界,如果有大數(shù)據(jù)量傳送,就不太好,適合小數(shù)據(jù)量傳送、密集運算 多進程調(diào)度開銷比較大。

總結(jié):最好是多進程和多線程結(jié)合,即根據(jù)實際的需要,每個CPU開啟一個子進程,這個子進程開啟多線程可以為若干同類型的數(shù)據(jù)進行處理。當(dāng)然你也可以利用多線程+CPU+輪詢方式來解決問題……方法和手段是多樣的,關(guān)鍵是自己看起來實現(xiàn)方便有能夠滿足要求,代價也合適。

按照多個不同的維度(類別),來看看多線程和多進程的對比(注:因為是感性的比較,因此都是相對的,不是說一個好得不得了,另外一個差的無法忍受)。

de1c078a-b037-11ee-8b88-92fbcf53809c.png

其實沒有絕對的好與壞,只有哪個更加合適的問題。我們來看實際應(yīng)用中究竟如何判斷更加合適。

1)需要頻繁創(chuàng)建銷毀的優(yōu)先用線程

這種原則最常見的應(yīng)用就是Web服務(wù)器了,來一個連接建立一個線程,斷了就銷毀線程,要是用進程,創(chuàng)建和銷毀的代價是很難承受的

2)需要進行大量計算的優(yōu)先使用線程

所謂大量計算,當(dāng)然就是要耗費很多CPU,切換頻繁了,這種情況下線程是最合適的。這種原則最常見的是圖像處理、算法處理。

3)強相關(guān)的處理用線程,弱相關(guān)的處理用進程

什么叫強相關(guān)、弱相關(guān)?理論上很難定義,給個簡單的例子就明白了。

一般的Server需要完成如下任務(wù):消息收發(fā)、消息處理?!跋⑹瞻l(fā)”和“消息處理”就是弱相關(guān)的任務(wù),而“消息處理”里面可能又分為“消息解碼”、“業(yè)務(wù)處理”,這兩個任務(wù)相對來說相關(guān)性就要強多了。因此“消息收發(fā)”和“消息處理”可以分進程設(shè)計,“消息解碼”、“業(yè)務(wù)處理”可以分線程設(shè)計。當(dāng)然這種劃分方式不是一成不變的,也可以根據(jù)實際情況進行調(diào)整。

4)可能要擴展到多機分布的用進程,多核分布的用線程

5)都滿足需求的情況下,用你最熟悉、最拿手的方式

至于“數(shù)據(jù)共享、同步”、“編程、調(diào)試”、“可靠性”這幾個維度的所謂的“復(fù)雜、簡單”應(yīng)該怎么取舍,我只能說:沒有明確的選擇方法。但我可以告訴你一個選擇原則:如果多進程和多線程都能夠滿足要求,那么選擇你最熟悉、最拿手的那個。需要提醒的是:雖然我給了這么多的選擇原則,但實際應(yīng)用中基本上都是“進程+線程”的結(jié)合方式,千萬不要真的陷入一種非此即彼的誤區(qū)。

11

多任務(wù)(多進程)

現(xiàn)代操作系統(tǒng)比如Mac OS X,UNIX,Linux,Windows等,都是支持“多任務(wù)”的操作系統(tǒng)。

什么叫“多任務(wù)”呢?簡單地說,就是操作系統(tǒng)可以同時運行多個任務(wù)。打個比方,你一邊在用瀏覽器上網(wǎng),一邊在聽MP3,一邊在用Word寫論文,這就是多任務(wù),至少同時有3個任務(wù)正在運行。還有很多任務(wù)悄悄地在后臺同時運行著,只是桌面上沒有顯示而已。

現(xiàn)在,多核CPU已經(jīng)非常普及了,但是,即使過去的單核CPU,也可以執(zhí)行多任務(wù)。由于CPU執(zhí)行代碼都是順序執(zhí)行的,那么,單核CPU是怎么執(zhí)行多任務(wù)的呢?

其實操作系統(tǒng)輪流讓各個任務(wù)交替執(zhí)行,任務(wù)1執(zhí)行0.01秒,切換到任務(wù)2,任務(wù)2執(zhí)行0.01秒,再切換到任務(wù)3,執(zhí)行0.01秒……這樣反復(fù)執(zhí)行下去。表面上看,每個任務(wù)都是交替執(zhí)行的,但是,由于CPU的執(zhí)行速度實在是太快了,我們感覺就像所有任務(wù)都在同時執(zhí)行一樣。

真正的并行執(zhí)行多任務(wù)只能在多核CPU上實現(xiàn),但是,由于任務(wù)數(shù)量遠遠多于CPU的核心數(shù)量,所以,操作系統(tǒng)也會自動把很多任務(wù)輪流調(diào)度到每個核心上執(zhí)行。

對于操作系統(tǒng)來說,一個任務(wù)就是一個進程(Process),比如打開一個瀏覽器就是啟動一個瀏覽器進程,打開一個記事本就啟動了一個記事本進程,打開兩個記事本就啟動了兩個記事本進程,打開一個Word就啟動了一個Word進程。

有些進程還不止同時干一件事,比如Word,它可以同時進行打字、拼寫檢查、打印等事情。在一個進程內(nèi)部,要同時干多件事,就需要同時運行多個“子任務(wù)”,我們把進程內(nèi)的這些 “子任務(wù)” 稱為線程(Thread)。

由于每個進程至少要干一件事,所以,一個進程至少有一個線程。當(dāng)然,像Word這種復(fù)雜的進程可以有多個線程,多個線程可以同時執(zhí)行,多線程的執(zhí)行方式和多進程是一樣的,也是由操作系統(tǒng)在多個線程之間快速切換,讓每個線程都短暫地交替運行,看起來就像同時執(zhí)行一樣。當(dāng)然,真正地同時執(zhí)行多線程需要多核CPU才可能實現(xiàn)。







審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19100

    瀏覽量

    228813
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    590

    瀏覽量

    27315
  • 多線程
    +關(guān)注

    關(guān)注

    0

    文章

    277

    瀏覽量

    19897

原文標題:線程、進程、多線程、多進程和多任務(wù)之間的關(guān)系?

文章出處:【微信號:單片機與嵌入式,微信公眾號:單片機與嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    嵌入式開發(fā)中的線程、進程多線程、多進程多任務(wù)什么關(guān)系

    可能學(xué)習(xí)嵌入式開發(fā)的讀者都聽說過這些專業(yè)名詞,但又多少人理解了? 首先,從定義開始,先看一下教科書上進程線程定義:進程:資源分配的最小單位。線程:程序執(zhí)行的最小單位。 心中默念,啥啥
    的頭像 發(fā)表于 10-26 11:01 ?6338次閱讀
    嵌入式開發(fā)中的<b class='flag-5'>線程</b>、<b class='flag-5'>進程</b>、<b class='flag-5'>多線程</b>、<b class='flag-5'>多進程</b>和<b class='flag-5'>多任務(wù)</b><b class='flag-5'>有</b>什么<b class='flag-5'>關(guān)系</b>

    進程線程區(qū)別

    。任一時刻,CPU總是運行一個進程,其他進程處于非運行狀態(tài)。一個車間里,可以很多工人。他們協(xié)同完成一個任務(wù)。線程就好比車間里的工人。一個
    發(fā)表于 11-30 14:06

    多線程多進程的區(qū)別

    6.你的數(shù)據(jù)庫一會又500個連接數(shù),一會有10個,你分析一下情況7.udp和tcp的區(qū)別8.多線程多進程的區(qū)別9.一臺web服務(wù)器,你選擇用多線程還是
    發(fā)表于 07-19 07:21

    淺談多進程多線程的選擇

    魚還是熊掌:淺談多進程多線程的選擇關(guān)于多進程多線程,教科書上最經(jīng)典的一句話是“進程是資源分配的最小單位,
    發(fā)表于 08-24 07:38

    python多線程多進程對比

    電視邊吃飯邊聊天。這就是我們的 多進程 才能做的事了。2. 單線程VS多線程VS多進程文字總是蒼白無力的,不如用代碼直接來測試一下。開始對比之前,首先定義四種類型的場景 - CPU計算
    發(fā)表于 03-15 16:42

    LINUX系統(tǒng)下多線程多進程性能分析

    采用多進程處理多個任務(wù),會占用很多系統(tǒng)資源(主要是CPU 和內(nèi)存的使用)。在LINUX 中,則對這種弊端進行了改進,在用戶態(tài)實現(xiàn)了多線程處理多任務(wù)。本文系統(tǒng)論述了
    發(fā)表于 08-13 08:31 ?20次下載

    如何選好多線程多進程

    關(guān)于多進程多線程,教科書上最經(jīng)典的一句話是“進程是資源分配的最小單位,線程是CPU調(diào)度的最小單位”,這句話應(yīng)付考試基本上夠了,但如果在工作中遇到類似的選擇問題,那就沒有這么簡單了,選
    的頭像 發(fā)表于 05-11 16:16 ?2929次閱讀
    如何選好<b class='flag-5'>多線程</b>和<b class='flag-5'>多進程</b>

    多進程多線程的深度比較

    問題,那就沒有那么簡單了,選的不好,會讓你深受其害。經(jīng)常在網(wǎng)絡(luò)上看到XDJM問“多進程好還是多線程好?”、"Linux下用多進程還是多線程
    發(fā)表于 04-02 14:42 ?451次閱讀

    多進程多線程的基本概念

    stack),自己的寄存器環(huán)境(register context),自己的線程本地存儲(thread-local storage)。一個進程可以多線程,每條
    發(fā)表于 04-02 14:49 ?737次閱讀

    Python多進程學(xué)習(xí)

    ) 技術(shù)不同,因為多線程的并發(fā)任務(wù)依賴于一個 GIL (Global Interpreter Lock)。在多進程中,每個進程都有自己的解釋器進程
    的頭像 發(fā)表于 04-26 11:04 ?518次閱讀

    淺談Linux網(wǎng)絡(luò)編程中的多進程多線程

    在Linux網(wǎng)絡(luò)編程中,我們應(yīng)該見過很多網(wǎng)絡(luò)框架或者server,多進程的處理方式,也有多線程處理方式,孰好孰壞并沒有可比性,首先選擇多進程還是
    發(fā)表于 08-08 16:56 ?787次閱讀
    淺談Linux網(wǎng)絡(luò)編程中的<b class='flag-5'>多進程</b>和<b class='flag-5'>多線程</b>

    關(guān)于Python多進程多線程詳解

    進程(process)和線程(thread)是操作系統(tǒng)的基本概念,但是它們比較抽象,不容易掌握。關(guān)于多進程多線程,教科書上最經(jīng)典的一句話是“進程
    的頭像 發(fā)表于 11-06 14:46 ?789次閱讀
    關(guān)于Python<b class='flag-5'>多進程</b>和<b class='flag-5'>多線程</b>詳解

    Linux系統(tǒng)上多線程多進程的運行效率

    關(guān)于多進程多線程,教科書上最經(jīng)典的一句話是“進程是資源分配的最小單位,線程是CPU調(diào)度的最小單位”,這句話應(yīng)付考試基本上夠了,但如果在工作中遇到類似的選擇問題,那就沒有這么簡單了,選
    的頭像 發(fā)表于 11-10 10:54 ?1294次閱讀
    Linux系統(tǒng)上<b class='flag-5'>多線程</b>和<b class='flag-5'>多進程</b>的運行效率

    你還是分不清多進程多線程嗎?一文搞懂!

    你還是分不清多進程多線程嗎?一文搞懂! 多進程多線程是并發(fā)編程中常見的兩個概念,它們都可以用于提高程序的性能和效率。但是它們的實現(xiàn)方式和使用場景略有不同。 1.
    的頭像 發(fā)表于 12-19 16:07 ?524次閱讀

    Python中多線程多進程的區(qū)別

    Python作為一種高級編程語言,提供了多種并發(fā)編程的方式,其中多線程多進程是最常見的兩種方式之一。在本文中,我們將探討Python中多線程多進程的概念、區(qū)別以及如何使用
    的頭像 發(fā)表于 10-23 11:48 ?231次閱讀
    Python中<b class='flag-5'>多線程</b>和<b class='flag-5'>多進程</b>的區(qū)別