iOS的多線程 你懂多少

首先呢 和大家分享一下關(guān)于線程和進(jìn)程一些方面的知識(shí)概念哈
進(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)(例如: 同時(shí)打開qq和微信 系統(tǒng)就會(huì)分別啟動(dòng)兩個(gè)進(jìn)程)

線程: 1個(gè)進(jìn)程執(zhí)行任務(wù)必須有線程(每個(gè)進(jìn)程中必須至少有一個(gè)線程) 線程是進(jìn)程執(zhí)行的最基本單元 一個(gè)進(jìn)程中的所有任務(wù)都在線程中執(zhí)行(例如: 用在愛奇藝上看電影 下載電影)

線程的串行: 一個(gè)線程中任務(wù)的執(zhí)行時(shí)串行的 如果在一個(gè)線程中執(zhí)行多個(gè)任務(wù) 那么只能按照順序一個(gè)一個(gè)執(zhí)行

多線程: 在一個(gè)進(jìn)程中 可以開辟多個(gè)線程來執(zhí)行任務(wù) 每條線程可以并行同時(shí)執(zhí)行不同任務(wù) 多線程技術(shù)可以提高程序的執(zhí)行效率 例如 同時(shí)下載三首音樂

多線程的原理: 在一個(gè)進(jìn)程中 實(shí)際上CPU只能執(zhí)行一個(gè)線程中的任務(wù) 多線程并發(fā)執(zhí)行之際上是 CPU快速的在多線程之間進(jìn)行切換調(diào)度 如果CPU的調(diào)度速度足夠快 就造成了多線程并發(fā)執(zhí)行的假象
但是一定記住 不可以創(chuàng)建過多的子線程 這樣CPU在切換線程并上的開銷會(huì)很大 CPU會(huì)累死 消耗大量的CPU資源 平均下來 每條線程被調(diào)度執(zhí)行的頻次會(huì)降低(線程的執(zhí)行效率也就降低了)

多線程的優(yōu)缺點(diǎn):
優(yōu)點(diǎn):
能適當(dāng)?shù)奶岣叱绦虻膱?zhí)行效率 能適當(dāng)提高資源利用率(CPU 內(nèi)存利用率(只要開啟線程就會(huì)占用一部分內(nèi)存資源))
缺點(diǎn):
開啟線程要占用一定的系統(tǒng)資源(默認(rèn)情況下 主線程占1M 子線程棧512KB)
程序變得更加復(fù)雜 比如線程之間的通信 多線程的數(shù)據(jù)共享

多線程在iOS中的應(yīng)用:
主線程: 一個(gè)iOS程序運(yùn)行后默認(rèn)會(huì)開啟一個(gè)主線程(UI線程)
主線程的主要作用: 顯示/刷新UI界面 處理UI事件(點(diǎn)擊事件, 滾動(dòng)事件, 拖拽事件等)
注意不要將耗時(shí)的操作放到主線程 會(huì)嚴(yán)重的影響到UI的流暢度 給用戶一種卡頓的體驗(yàn)

在iOS編程中有三種多線程編程技術(shù)分別是:

  1. NSThread
  2. Cocoa NSOperation
  3. GCD (Grand Central Dispatch)
    以上三種多線程編程 從上到下 抽象層次是從低到高 抽象度越高使用起來越簡(jiǎn)單 也是Apple最推薦使用的
    下面簡(jiǎn)單介紹一下以上三種多線程編程的優(yōu)缺點(diǎn)

NSThread
優(yōu)點(diǎn): 與其他兩種相比 較為輕量級(jí)
缺點(diǎn): 需要自己管理線程的生命周期, 線程同步

Cocoa NSOperation
優(yōu)點(diǎn): 不需要線程的管理 數(shù)據(jù)同步的事情 可以把精力放在自己需要執(zhí)行的操作上 相關(guān)的類是NSOperation NSOperationQueue
NSOperation是個(gè)抽象類 使用它必須用他的子類 可是實(shí)現(xiàn)它或者使用它定義好的兩個(gè)子類 NSInvocationOperation和NSBlockOperation 創(chuàng)建NSOperation子類的對(duì)象 把對(duì)象添加到NSOperationQueue隊(duì)列里執(zhí)行

GCD
Grand Central Dispatch 是Apple開發(fā)的一個(gè)多核編程的解決方法 在iOS4.0以后開始使用 GCD是一個(gè)代替NSTread和NSOperation等技術(shù)的很高效很強(qiáng)大的技術(shù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末办斑,一起剝皮案震驚了整個(gè)濱河市妹懒,隨后出現(xiàn)的幾起案子他爸,更是在濱河造成了極大的恐慌值骇,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件想诅,死亡現(xiàn)場(chǎng)離奇詭異纪吮,居然都是意外死亡荒勇,警方通過查閱死者的電腦和手機(jī)泰佳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門盼砍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人逝她,你說我怎么就攤上這事浇坐。” “怎么了黔宛?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵近刘,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我宁昭,道長(zhǎng)跌宛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任积仗,我火速辦了婚禮,結(jié)果婚禮上蜕猫,老公的妹妹穿的比我還像新娘寂曹。我一直安慰自己,他們只是感情好回右,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布隆圆。 她就那樣靜靜地躺著,像睡著了一般翔烁。 火紅的嫁衣襯著肌膚如雪渺氧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天蹬屹,我揣著相機(jī)與錄音侣背,去河邊找鬼。 笑死慨默,一個(gè)胖子當(dāng)著我的面吹牛贩耐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播厦取,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼潮太,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起铡买,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤更鲁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后奇钞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體澡为,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年蛇券,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缀壤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡纠亚,死狀恐怖塘慕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蒂胞,我是刑警寧澤图呢,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站骗随,受9級(jí)特大地震影響蛤织,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鸿染,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一指蚜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧涨椒,春花似錦摊鸡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至囤热,卻和暖如春猎提,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背旁蔼。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工锨苏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人牌芋。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓蚓炬,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親躺屁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子肯夏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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

  • Object C中創(chuàng)建線程的方法是什么?如果在主線程中執(zhí)行代碼,方法是什么驯击?如果想延時(shí)執(zhí)行代碼烁兰、方法又是什么? 1...
    AlanGe閱讀 1,716評(píng)論 0 17
  • 多線程 在iOS開發(fā)中為提高程序的運(yùn)行效率會(huì)將比較耗時(shí)的操作放在子線程中執(zhí)行徊都,iOS系統(tǒng)進(jìn)程默認(rèn)啟動(dòng)一個(gè)主線程沪斟,用...
    郭豪豪閱讀 2,587評(píng)論 0 4
  • 又來到了一個(gè)老生常談的問題,應(yīng)用層軟件開發(fā)的程序員要不要了解和深入學(xué)習(xí)操作系統(tǒng)呢暇矫? 今天就這個(gè)問題開始主之,來談?wù)劜?..
    tangsl閱讀 4,088評(píng)論 0 23
  • .一.進(jìn)程 進(jìn)程:是指在系統(tǒng)中正在運(yùn)行的一個(gè)應(yīng)用程序,每個(gè)進(jìn)程之間是獨(dú)立的,每個(gè)進(jìn)程均運(yùn)行在其專用且受保護(hù)的內(nèi)存空...
    IIronMan閱讀 4,476評(píng)論 1 33
  • -01-年少對(duì)精致模糊的理解就是一個(gè)穿著精致的女子,花著自己的錢房轿,享受著屬于自己的生活粤攒。 電影《欲望都市》里四個(gè)個(gè)...
    烤魚匠閱讀 230評(píng)論 2 1