1醋火、多線程基本概念 和 iOS 中多線程技術(shù)

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)常適用

推薦博客:

objc 中國(guó)——并發(fā)編程:API 及挑戰(zhàn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市报强,隨后出現(xiàn)的幾起案子灸姊,更是在濱河造成了極大的恐慌,老刑警劉巖秉溉,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件力惯,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡召嘶,警方通過(guò)查閱死者的電腦和手機(jī)父晶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)弄跌,“玉大人甲喝,你說(shuō)我怎么就攤上這事〉螅” “怎么了俺猿?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵茎匠,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我押袍,道長(zhǎng)诵冒,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任谊惭,我火速辦了婚禮汽馋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘圈盔。我一直安慰自己豹芯,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布驱敲。 她就那樣靜靜地躺著铁蹈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪众眨。 梳的紋絲不亂的頭發(fā)上握牧,一...
    開(kāi)封第一講書(shū)人閱讀 51,727評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音娩梨,去河邊找鬼沿腰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛狈定,可吹牛的內(nèi)容都是我干的颂龙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼纽什,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼措嵌!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起稿湿,我...
    開(kāi)封第一講書(shū)人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤铅匹,失蹤者是張志新(化名)和其女友劉穎押赊,沒(méi)想到半個(gè)月后饺藤,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡流礁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年涕俗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片神帅。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡再姑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出找御,到底是詐尸還是另有隱情元镀,我是刑警寧澤绍填,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站栖疑,受9級(jí)特大地震影響讨永,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜遇革,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一卿闹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧萝快,春花似錦锻霎、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至奄容,卻和暖如春蚌铜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嫩海。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工冬殃, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人叁怪。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓审葬,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親奕谭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子涣觉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,182評(píng)論 25 707
  • Object C中創(chuàng)建線程的方法是什么?如果在主線程中執(zhí)行代碼血柳,方法是什么官册?如果想延時(shí)執(zhí)行代碼、方法又是什么难捌? 1...
    AlanGe閱讀 1,740評(píng)論 0 17
  • 又來(lái)到了一個(gè)老生常談的問(wèn)題膝宁,應(yīng)用層軟件開(kāi)發(fā)的程序員要不要了解和深入學(xué)習(xí)操作系統(tǒng)呢? 今天就這個(gè)問(wèn)題開(kāi)始根吁,來(lái)談?wù)劜?..
    tangsl閱讀 4,129評(píng)論 0 23
  • 多線程 在iOS開(kāi)發(fā)中為提高程序的運(yùn)行效率會(huì)將比較耗時(shí)的操作放在子線程中執(zhí)行员淫,iOS系統(tǒng)進(jìn)程默認(rèn)啟動(dòng)一個(gè)主線程,用...
    郭豪豪閱讀 2,600評(píng)論 0 4
  • 夜王 夜王乘著復(fù)活冰龍攻打東海望击敌,冰龍噴出的火焰融了長(zhǎng)城上的冰塊介返,尸鬼沖過(guò)長(zhǎng)城,東海望失守,復(fù)活的冰龍和尸鬼一道將...
    morning1chen閱讀 651評(píng)論 1 3