進程的概念
- 進程(Process)是計算機中的程序關(guān)于某數(shù)據(jù)集合上的一次運行活動蓝翰,是系統(tǒng)進行資源分配和調(diào)度的基本單位往湿,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)健无。
- 在早期面向進程設(shè)計的計算機結(jié)構(gòu)中回溺,進程是程序的基本執(zhí)行實體啤贩;在當(dāng)代面向線程設(shè)計的計算機結(jié)構(gòu)中茫打,進程是線程的容器居触。程序是指令妖混、數(shù)據(jù)及其組織形式的描述,進程是程序的實體轮洋。
引用百度百科 進程
線程的概念
- 線程:thread
- 一個進程想要執(zhí)行任務(wù)制市,必須要有線程(每個進程至少需要有一條線程)。
- 一個進程中的所有任務(wù)均是在線程中執(zhí)行的弊予。
線程的串行
- 一個線程中的任務(wù)是串行的祥楣。
- 同一時間下,同一線程只能執(zhí)行一個任務(wù)汉柒。
task 1 > task 2 > task 3
因此荣堰,可以認為線程是進程中的一條執(zhí)行路徑
線程與進程的關(guān)系
- 線程是CPU調(diào)用執(zhí)行任務(wù)的最小的單位。
- 線程是CPU分配資源和調(diào)度的單位竭翠。
- 一個程序可以對應(yīng)多個進程振坚,每個進程中有可以對應(yīng)有多個線程,但每個進程至少要有一條線程斋扰。
- 同一個進程中的線程共享進程的資源渡八。
進程如同工廠
線程如同工人
多線程概念
- 一個進程中可以開啟多條線程,每條線程可以并行(同時)執(zhí)行不同的任務(wù)传货。
- 多線程技術(shù)可以大大提高程序的運行效率屎鳍。
線程1 > task 1
線程2 > task 2
線程3 > task 3
多線程的原理
- 實際上在同一時間,CPU只能處理一條線程问裕,只有一條線程在工作(執(zhí)行)逮壁。
- 多線程的并發(fā)同時執(zhí)行,其實是CPU快速地在多個線程之間來回調(diào)度粮宛。因此窥淆,如果CPU調(diào)度的速度足夠快,就形成了多個線程并發(fā)執(zhí)行的假象巍杈。
多線程原理示意圖
如圖所示忧饭,CPU不停在線程間切換調(diào)度,其中序號并不能代表CPU調(diào)度的順序筷畦,僅作示意词裤。
多線程的優(yōu)點
- 能夠適當(dāng)提高程序的執(zhí)行效率
- 能夠適當(dāng)提高資源的利用率(CPU和內(nèi)存)
多線程的缺點
- 線程的創(chuàng)建是有開銷的,需要消耗資源
- 開啟大量的線程會降低程序的性能
- 線程越多鳖宾,CPU在線程之間的調(diào)度花費的時間會更長
- 程序的設(shè)計相對會更加復(fù)雜:涉及到線程之間的通訊和線程間的數(shù)據(jù)共享