進(jìn)程
- 進(jìn)程是在系統(tǒng)中正在運(yùn)行的一個(gè)應(yīng)用程序
- 每個(gè)進(jìn)程之間是獨(dú)立的粗悯,每個(gè)進(jìn)程皆運(yùn)行在其專用且受保護(hù)的內(nèi)存空間內(nèi)
- 一個(gè)應(yīng)用程序可能對(duì)應(yīng)多個(gè)進(jìn)程。
線程
- 一個(gè)進(jìn)程如果想要執(zhí)行任務(wù),必須得有一個(gè)線程(一個(gè)進(jìn)程至少得有一條線程)
- 一個(gè)進(jìn)程的所有任務(wù)都在線程中執(zhí)行
線程的串行
- 如果要在一個(gè)線程中執(zhí)行多個(gè)任務(wù)葡缰,那么只能一個(gè)一個(gè)的按順序執(zhí)行任務(wù),同一時(shí)間內(nèi)一個(gè)線程只能執(zhí)行一個(gè)任務(wù)忱反。
多線程
- 一個(gè)進(jìn)程中可以開啟多條線程泛释,每條線程可以(同時(shí))執(zhí)行不同的任務(wù)
- 原理:同意時(shí)間CPU只能處理1條線程,只有一條線程在工作温算,多線程并發(fā)執(zhí)行時(shí)怜校,其實(shí)是在CPU之間切換。
- 注意:如果線程太多注竿,CPU在多條線程之間切換茄茁,會(huì)消耗大量的CPU資源(通常3~5條線程就可以了)。
- 優(yōu)點(diǎn):能適當(dāng)提高程序的執(zhí)行效率巩割,提高資源的利用率裙顽。
- 缺點(diǎn):線程越多,會(huì)降低程序的性能
多線程的應(yīng)用
什么是主線程
- 一個(gè)iOS程序運(yùn)行之后喂分,會(huì)默認(rèn)開啟一條線程锦庸,稱為主線程(UI線程)
- 作用:
- 顯示/刷新UI界面
- 處理UI事件(比如點(diǎn)擊事件,拖拽滾動(dòng)...)
- 注意:
- 耗時(shí)操作不應(yīng)該放在主線程蒲祈,因?yàn)楹臅r(shí)操作會(huì)卡住主線程會(huì)影響UI流暢度甘萧,會(huì)有一種卡頓的感覺(應(yīng)該將耗時(shí)操作放到子線程「后臺(tái)線程萝嘁、非主線程」當(dāng)中)。