關(guān)于iOS 中 GCD 使用以及其他創(chuàng)建線程的方法

1 多線程是什么

多線程是個復雜的概念驴一,按字面意思是同步完成多項任務(wù)休雌,提高了資源的使用效率,從硬件肝断、操作系統(tǒng)杈曲、應(yīng)用軟件不同的角度去看,多線程被賦予不同的內(nèi)涵胸懈,對于硬件鱼蝉,現(xiàn)在市面上多數(shù)的CPU都是多核的,多核的CPU運算多線程更為出色箫荡;從操作系統(tǒng)角度,是多任務(wù)渔隶,現(xiàn)在用的主流操作系統(tǒng)都是多任務(wù)的羔挡,可以一邊聽歌洁奈、一邊寫博客;對于應(yīng)用來說绞灼,多線程可以讓應(yīng)用有更快的回應(yīng)利术,可以在網(wǎng)絡(luò)下載時,同時響應(yīng)用戶的觸摸操作低矮。在iOS應(yīng)用中印叁,對多線程最初的理解,就是并發(fā)军掂,它的含義是原來先做燒水轮蜕,再摘菜,再炒菜的工作蝗锥,會變成燒水的同時去摘菜跃洛,最后去炒菜。

2 iOS 中的多線程

iOS中的多線程终议,是Cocoa框架下的多線程汇竭,通過Cocoa的封裝,可以讓我們更為方便的使用線程穴张,做過C++的同學可能會對線程有更多的理解细燎,比如線程的創(chuàng)立,信號量皂甘、共享變量有認識玻驻,Cocoa框架下會方便很多,它對線程做了封裝叮贩,有些封裝击狮,可以讓我們創(chuàng)建的對象,本身便擁有線程益老,也就是線程的對象化抽象彪蓬,從而減少我們的工程,提供程序的健壯性捺萌。

GCD是(Grand Central Dispatch)的縮寫 档冬,從系統(tǒng)級別提供的一個易用地多線程類庫,具有運行時的特點桃纯,能充分利用多核心硬件酷誓。GCD的API接口為C語言的函數(shù),函數(shù)參數(shù)中多數(shù)有Block态坦,關(guān)于Block的使用參看這里盐数,為我們提供強大的“接口”,對于GCD的使用參見本文

NSOperation與Queue

NSOperation是一個抽象類伞梯,它封裝了線程的細節(jié)實現(xiàn)玫氢,我們可以通過子類化該對象帚屉,加上NSQueue來同面向?qū)ο蟮乃季S,管理多線程程序漾峡。具體可參看這里:一個基于NSOperation的多線程網(wǎng)絡(luò)訪問的項目攻旦。

NSThread

NSThread是一個控制線程執(zhí)行的對象,它不如NSOperation抽象生逸,通過它我們可以方便的得到一個線程牢屋,并控制它。但NSThread的線程之間的并發(fā)控制槽袄,是需要我們自己來控制的烙无,可以通過NSCondition實現(xiàn)。

參看

iOS多線程編程之NSThread的使用

其他多線程

在Cocoa的框架下掰伸,通知皱炉、Timer和異步函數(shù)等都有使用多線程,(待補充).

3 iOS多線程常見面試題

在項目什么時候選擇使用GCD狮鸭,什么時候選擇NSOperation合搅?

項目中使用NSOperation的優(yōu)點是NSOperation是對線程的高度抽象,在項目中使用它歧蕉,會使項目的程序結(jié)構(gòu)更好灾部,子類化NSOperation的設(shè)計思路,是具有面向?qū)ο蟮膬?yōu)點(復用惯退、封裝)赌髓,使得實現(xiàn)是多線程支持,而接口簡單催跪,建議在復雜項目中使用锁蠕。

項目中使用GCD的優(yōu)點是GCD本身非常簡單、易用懊蒸,對于不復雜的多線程操作荣倾,會節(jié)省代碼量,而Block參數(shù)的使用骑丸,會是代碼更為易讀舌仍,建議在簡單項目中使用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末通危,一起剝皮案震驚了整個濱河市铸豁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌菊碟,老刑警劉巖节芥,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異逆害,居然都是意外死亡藏古,警方通過查閱死者的電腦和手機增炭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拧晕,“玉大人,你說我怎么就攤上這事梅垄〕Ю蹋” “怎么了?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵队丝,是天一觀的道長靡馁。 經(jīng)常有香客問我,道長机久,這世上最難降的妖魔是什么臭墨? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮膘盖,結(jié)果婚禮上胧弛,老公的妹妹穿的比我還像新娘。我一直安慰自己侠畔,他們只是感情好结缚,可當我...
    茶點故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著软棺,像睡著了一般红竭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上喘落,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天茵宪,我揣著相機與錄音,去河邊找鬼瘦棋。 笑死稀火,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的兽狭。 我是一名探鬼主播憾股,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼箕慧!你這毒婦竟也來了服球?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤颠焦,失蹤者是張志新(化名)和其女友劉穎斩熊,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伐庭,經(jīng)...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡粉渠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年分冈,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片霸株。...
    茶點故事閱讀 40,973評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡雕沉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出去件,到底是詐尸還是另有隱情坡椒,我是刑警寧澤,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布尤溜,位于F島的核電站倔叼,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏宫莱。R本人自食惡果不足惜丈攒,卻給世界環(huán)境...
    茶點故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望授霸。 院中可真熱鬧巡验,春花似錦、人聲如沸绝葡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽藏畅。三九已至敷硅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間愉阎,已是汗流浹背绞蹦。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留榜旦,地道東北人幽七。 一個月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像溅呢,于是被迫代替她去往敵國和親澡屡。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,982評論 2 361

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

  • Object C中創(chuàng)建線程的方法是什么咐旧?如果在主線程中執(zhí)行代碼驶鹉,方法是什么?如果想延時執(zhí)行代碼铣墨、方法又是什么室埋? 1...
    AlanGe閱讀 1,748評論 0 17
  • 多線程 在iOS開發(fā)中為提高程序的運行效率會將比較耗時的操作放在子線程中執(zhí)行,iOS系統(tǒng)進程默認啟動一個主線程,用...
    郭豪豪閱讀 2,604評論 0 4
  • 線程、進程 1.iOS中的多線程操作腌逢、多線程方式降淮? 2.多線程的優(yōu)點和缺點分別是什么? 答:優(yōu)點:1搏讶、將耗時較長的...
    丶逐漸閱讀 1,380評論 0 8
  • 1骤肛、簡介:1.1 iOS有三種多線程編程的技術(shù),分別是:1.窍蓝、NSThread2、Cocoa NSOperatio...
    LuckTime閱讀 1,351評論 0 1
  • 一 律師 最近在社交APP上認識了一個大我兩歲的律師繁成,離異吓笙,前妻已出國,女兒在湖南外婆家?guī)е硗蟆0凑f是一個很合適的結(jié)...