GCD線程學(xué)習(xí)小結(jié)

GCD的三種隊(duì)列類型

GCD的核心是dispatch隊(duì)列苍息。dispatch Block的執(zhí)行最終會(huì)放到某個(gè)隊(duì)列中去。

1. The main queen (主線程串行隊(duì)列)聪铺。通過(guò) dispatch_get_main_queen()獲取坠敷。

2.Global queen (全局并發(fā)隊(duì)列),通過(guò)dispatch_get_global_queen()獲取杈湾。全局并發(fā)隊(duì)列由全局共享,可以設(shè)置高攘须、中漆撞、低、后臺(tái)四個(gè)優(yōu)先級(jí)于宙。

3.Custom queen (自定義隊(duì)列)可以串行浮驳,也可以并發(fā)。通過(guò)dispatch_queen_create()獲取捞魁。

4.Group queen(隊(duì)列組)至会,將多線程分組,最大的好處獲知所有線程的執(zhí)行情況谱俭。通過(guò)dispatch_group_create()獲取奉件。通過(guò)dispatch_group_notify監(jiān)聽(tīng)線程的執(zhí)行情況宵蛀。

dispatch_sync同步執(zhí)行任務(wù)函數(shù),不會(huì)開(kāi)啟新的線程瓶蚂。dispatch_async異步執(zhí)行任務(wù)函數(shù)糖埋,會(huì)開(kāi)啟新的線程。

1.在主線程串行隊(duì)列中執(zhí)行同步任務(wù)會(huì)造成線程死鎖, block中的任務(wù)永遠(yuǎn)不會(huì)執(zhí)行窃这。因?yàn)閐ispatch_sync這個(gè)函數(shù)返回的時(shí)候主線程才會(huì)往下執(zhí)行瞳别,但這個(gè)函數(shù)的返回條件是里面的block返回,因?yàn)樗徊宓降搅酥骶€程串行隊(duì)列最后執(zhí)行杭攻,所以dispatch_sync無(wú)法返回祟敛,主線程串行隊(duì)列不會(huì)執(zhí)行到最后一個(gè),產(chǎn)生死鎖兆解。

dispatch_sync(mainQueen,^){

Nslog(@"mainQueen");

}

2.主線程串行隊(duì)列中執(zhí)行異步執(zhí)行任務(wù)不會(huì)造成死鎖馆铁。

dispatch_async(mainQueen,^){

Nslog(@"mainQueen");

}

3.從子線程異步返回主線程更新UI,使用方式最多

dispatch_queue_t globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_async(globalQueue, ^{

//子線程異步執(zhí)行下載任務(wù)锅睛,防止主線程卡頓

NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];

NSError *error;

NSString *htmlData = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];

if (htmlData != nil) {

dispatch_queue_t mainQueue = dispatch_get_main_queue();

//異步返回主線程埠巨,根據(jù)獲取的數(shù)據(jù),更新UI

dispatch_async(mainQueue, ^{

NSLog(@"根據(jù)更新UI界面");

});

} else {

NSLog(@"error when download:%@",error);

}

});

主線程串行隊(duì)列由系統(tǒng)默認(rèn)生成现拒,無(wú)法使用dispatch_resume()和diapatch_suspend()來(lái)控制執(zhí)行繼續(xù)或者中斷辣垒。

Global Queen(全局并發(fā)線程),耗時(shí)操作印蔬,例如讀取網(wǎng)絡(luò)數(shù)據(jù)勋桶、數(shù)據(jù)庫(kù)讀寫(xiě)、IO等侥猬。我們會(huì)在另一個(gè)線程中執(zhí)行此操作例驹,然后通知主線程刷新UI。

1.全局并發(fā)隊(duì)列同步執(zhí)行任務(wù)退唠,在主線程中執(zhí)行會(huì)導(dǎo)致頁(yè)面卡頓鹃锈。

dispatch_sync(globalQueen,^){

Nslog(@"globalQueen");

}

block中的代碼2s后才會(huì)執(zhí)行。

2.全局并發(fā)隊(duì)列異步執(zhí)行任務(wù)瞧预,在主線程中執(zhí)行不會(huì)造成頁(yè)面卡頓仪召。

dispatch_async(globalQueen,^){

Nslog(@"globalQueen");

}

3.多個(gè)全局并發(fā)隊(duì)列,異步執(zhí)行任務(wù)

dispatch_async(globalQueen,^){

Nslog(@"老大");

}

dispatch_async(globalQueen,^){

Nslog(@"老二");

}

異步線程的執(zhí)行順序是不確定的松蒜。幾乎同步開(kāi)始執(zhí)行

全局并發(fā)隊(duì)列由系統(tǒng)默認(rèn)生成的,所以無(wú)法調(diào)用dispatch_resume()和dispatch_suspend()來(lái)控制執(zhí)行繼續(xù)或中斷已旧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末秸苗,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子运褪,更是在濱河造成了極大的恐慌惊楼,老刑警劉巖玖瘸,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異檀咙,居然都是意外死亡雅倒,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)弧可,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蔑匣,“玉大人力奋,你說(shuō)我怎么就攤上這事潮剪。” “怎么了腾夯?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵校套,是天一觀的道長(zhǎng)价脾。 經(jīng)常有香客問(wèn)我,道長(zhǎng)笛匙,這世上最難降的妖魔是什么侨把? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮妹孙,結(jié)果婚禮上秋柄,老公的妹妹穿的比我還像新娘。我一直安慰自己涕蜂,他們只是感情好华匾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著机隙,像睡著了一般蜘拉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上有鹿,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天旭旭,我揣著相機(jī)與錄音,去河邊找鬼葱跋。 笑死持寄,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的娱俺。 我是一名探鬼主播稍味,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼荠卷!你這毒婦竟也來(lái)了模庐?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤油宜,失蹤者是張志新(化名)和其女友劉穎掂碱,沒(méi)想到半個(gè)月后怜姿,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疼燥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年沧卢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片醉者。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡但狭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出湃交,到底是詐尸還是另有隱情熟空,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布搞莺,位于F島的核電站息罗,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏才沧。R本人自食惡果不足惜迈喉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望温圆。 院中可真熱鬧挨摸,春花似錦、人聲如沸岁歉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)锅移。三九已至熔掺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間非剃,已是汗流浹背置逻。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留备绽,地道東北人券坞。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像肺素,于是被迫代替她去往敵國(guó)和親恨锚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

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