1怯晕、什么是多線程
多線程(英語(yǔ):multithreading)潜圃,是指從軟件或者硬件上實(shí)現(xiàn)多個(gè)線程并發(fā)執(zhí)行的技術(shù)。具有多線程能力的計(jì)算機(jī)因有硬件支持而能夠在同一時(shí)間執(zhí)行多于一個(gè)線程舟茶,進(jìn)而提升整體處理性能谭期。
這個(gè)是百度上的解釋堵第!
2、為什么要學(xué)習(xí)多線程技術(shù)
目的都差不多就是:
- 提高硬件的使用效率隧出。
- 改善用戶對(duì)軟件的使用體驗(yàn)踏志。
你不希望用戶在使用你的軟件的過(guò)程中出現(xiàn)卡頓吧!
軟件出現(xiàn)卡頓的主要原因就是 UI 線程處理了太多的耗時(shí)操作胀瞪,耗時(shí)操作操作沒(méi)有處理完成针余,UI界面就出現(xiàn)短暫性的停頓(卡頓)。
軟件界面卡頓的解決方案:
- UI 線程只處理 UI 的事情凄诞,例如界面的更新圆雁,用戶事件的響應(yīng)。耗時(shí)的操作可以放在后臺(tái)的線程中執(zhí)行帆谍,當(dāng)耗時(shí)操作處理完畢后伪朽,通知 UI 線程刷新相應(yīng)的界面。
提高 app 處理某一任務(wù)的能力:
- 由于現(xiàn)在的 cpu 基本上都是多核處理器汛蝙,都可以進(jìn)行并發(fā)操作烈涮。假設(shè),下載一個(gè)文件用一個(gè)線程是 10 分鐘窖剑,如果用 2個(gè)線程下載是否就只需要 5 分鐘坚洽, 用 5個(gè)線程下載是否就只要 2 分鐘。在用戶的體驗(yàn)上是否效率提高了 500% 苛吱。 用戶的使用體驗(yàn)就是一個(gè)字 爽酪术。
使用多線程技術(shù)也提高了硬件的使用效率器瘪。
3翠储、多線程的基本概念
-
進(jìn)程: 正在進(jìn)行的應(yīng)用程序。(可以簡(jiǎn)單理解為橡疼,一個(gè)運(yùn)行的應(yīng)用程序就是一個(gè)進(jìn)程)
每個(gè)進(jìn)程之間是獨(dú)立的援所,每個(gè)進(jìn)程都運(yùn)行在專用的且受保護(hù)的內(nèi)存空間內(nèi)。 -
線程:1 個(gè)進(jìn)程需要執(zhí)行任務(wù)欣除,必須得有線程住拭。(每一個(gè)進(jìn)程至少有一條線程)
線程是進(jìn)程的執(zhí)行單元,一個(gè)進(jìn)程中的所有任務(wù)都在線程中執(zhí)行历帚。 -
多線程:1 個(gè)進(jìn)程中可以開(kāi)啟多條線程滔岳。每條線程可以(同時(shí))并發(fā)執(zhí)行不同的任務(wù)。
多線程可以提高程序的執(zhí)行效率挽牢。
多線程的原理
同一時(shí)間谱煤,cpu 只能處理1條線程,只有1條線程在工作(執(zhí)行)禽拔。
多線程并發(fā)執(zhí)行刘离,其實(shí)是 cpu 快速的在多條線程之間調(diào)度(切換)室叉。
多線程的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
* 能適當(dāng)?shù)奶岣叱绦虻膱?zhí)行效率。
* 能適當(dāng)提高資源的利用率硫惕。(cpu 和 內(nèi)存的利用率)
缺點(diǎn)
* 開(kāi)啟的線程需要占用一定的內(nèi)存空間茧痕,(默認(rèn)每一條線程占用 512kb的內(nèi)存)
開(kāi)啟大量的線程,會(huì)占用大量的內(nèi)存空間恼除,降低程序的性能踪旷。
* 線程越多,cpu 在調(diào)度線程上的開(kāi)銷就越大豁辉。
* 線程越多埃脏,就越耗電(手持設(shè)備必須考慮這個(gè)問(wèn)題)
* 程序設(shè)計(jì)更加復(fù)雜: 線程間通訊,多線程的數(shù)據(jù)共享秋忙。
線程在 5 到 6 條之間是比較合理的彩掐。
iOS 中多線程技術(shù)的使用
1、主線程
默認(rèn)會(huì)開(kāi)啟1一條線程灰追,稱之為主線程堵幽。 iOS 中稱之為 UI線程
(在 iOS 開(kāi)發(fā)中所有視圖更新的操作都是在 主線程中完成的)
主線程的主要作用
- 顯示、刷新 ui 界面
- 處理 UI 事件(點(diǎn)擊弹澎,滾動(dòng)朴下,退拽)
使用注意
- 將耗時(shí)操作放在后臺(tái)線程。
2苦蒿、 iOS 中多線程技術(shù)
pthread : (純屬打醬油的)
- 多線程的 api
- 適用 unix 殴胧,linex , windows
- c 語(yǔ)言
- 跨平臺(tái)
- 難度大
- 程序員管理生命周期
*** 幾乎不用
NSThread:
- 適用簡(jiǎn)單
- 簡(jiǎn)單易用佩迟,可以直接操作線程团滥。
- oc 的
- 偶爾適用
- 程序員管理生命周期
GCD
- 替代 NSThread 等多線程技術(shù)
- 充分利用設(shè)備多核技術(shù)
- c
- 經(jīng)常適用
- 系統(tǒng)自動(dòng)管理線程生命周期
NSOperation
- 基于 gcd 的封裝
- 比 gcd 簡(jiǎn)單
- 更加面向?qū)ο?/li>
- 系統(tǒng)自動(dòng)管理線程生命周期
- 經(jīng)常適用
推薦博客: