GCD

????? 在iOS所有實(shí)現(xiàn)多線程的方案中鳄厌,GCD應(yīng)該是最有魅力的,因?yàn)镚CD本身是蘋果公司為多核的并行運(yùn)算提出的解決方案妈踊。GCD在工作時(shí)會(huì)自動(dòng)利用更多的處理器核心了嚎,以充分利用更強(qiáng)大的機(jī)器。GCD是Grand Central Dispatch的簡(jiǎn)稱廊营,它是基于C語(yǔ)言的歪泳。如果使用GCD,完全由系統(tǒng)管理線程赘风,我們不需要編寫線程代碼夹囚。只需定義想要執(zhí)行的任務(wù),然后添加到適當(dāng)?shù)恼{(diào)度隊(duì)列(dispatch queue)。GCD會(huì)負(fù)責(zé)創(chuàng)建線程和調(diào)度你的任務(wù)邀窃,系統(tǒng)直接提供線程管理

??? 使用GCD的時(shí)候有以下幾個(gè)步驟:

??? 一荸哟、創(chuàng)建任務(wù):確定要執(zhí)行什么操作

??? 二、創(chuàng)建隊(duì)列:將任務(wù)添加到隊(duì)列中? GCD會(huì)將隊(duì)列里的任務(wù)取出瞬捕,放到對(duì)應(yīng)的線程中去執(zhí)行

??? 三鞍历、選擇任務(wù)的執(zhí)行函數(shù):

1.同步的方式執(zhí)行函數(shù)

dispatch_sync(dispatch_queue_t queue, ^(void)block);

參數(shù)1:queue是對(duì)應(yīng)的隊(duì)列

參數(shù)2:block是對(duì)應(yīng)的執(zhí)行任務(wù)

2.異步的方式執(zhí)行函數(shù)


dispatch_async(dispatch_queue_t queue, ^(void)block);

參數(shù)1:隊(duì)列

參數(shù)2:對(duì)應(yīng)的任務(wù)

隊(duì)列有下面四種

*需要注意的是:主隊(duì)列中嚴(yán)禁提交同步任務(wù)? 會(huì)導(dǎo)致線程卡死? 導(dǎo)致界面假死

主隊(duì)列?? 不允許在主線程中提交同步任務(wù),否則會(huì)死循環(huán)?? 刷新UI的操作放到主隊(duì)列中執(zhí)行

dispatch_queue_t mainQueue = dispatch_get_main_queue();

同步狀態(tài):會(huì)卡死

異步狀態(tài):不會(huì)開(kāi)線程(會(huì)在線程閑下來(lái)的時(shí)候執(zhí)行提交的任務(wù))

//全局并發(fā)隊(duì)列

dispatch_queue_t globalQueue

=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);

同步?狀態(tài):不會(huì)開(kāi)線程肪虎,順序執(zhí)行

異步狀態(tài):會(huì)開(kāi)線程劣砍,并且亂序執(zhí)行

//自定義串行

dispatch_queue_t serialQueue=dispatch_queue_create("abc", NULL);

同步狀態(tài):不開(kāi)線程,并且順序執(zhí)行

異步狀態(tài):開(kāi)一條線程扇救,順序執(zhí)行

//自定義的并行隊(duì)列

dispatch_queue_t ConcurrentQueue=dispatch_queue_create("abc", DISPATCH_QUEUE_CONCURRENT);

同步狀態(tài):不開(kāi)線程刑枝,順序執(zhí)行

異步狀態(tài):開(kāi)線程香嗓,亂序執(zhí)行(會(huì)開(kāi)多條線程)

如下方法?? 來(lái)做示例

-(void)threadCommunication{

//創(chuàng)建主隊(duì)列

dispatch_queue_t? mainQueue = dispatch_get_main_queue();

//創(chuàng)建全局并發(fā)隊(duì)列

dispatch_queue_t? globalQueue

=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

//開(kāi)啟異步任務(wù)

dispatch_async(globalQueue, ^{

NSURL *url = [NSURL URLWithString:@"http://v1.qzone.cc/pic/201408/29/17/03/540041ff31605450.jpeg%21600x600.jpg"];

NSData *data= [NSData dataWithContentsOfURL:url];

NSLog(@"全局并發(fā)隊(duì)列=%@",[NSThread currentThread]);

??????? //開(kāi)啟第二個(gè)異步任務(wù)

???????? dispatch_async(mainQueue, ^{

????????? //這里刷UI《有好東西哦。你懂的》

????????? self.MyImageView.image=[UIImage imageWithData:data];

????????? NSLog(@"主隊(duì)列=%@",[NSThread currentThread]);

??????????? });

???? });

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末装畅,一起剝皮案震驚了整個(gè)濱河市靠娱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌掠兄,老刑警劉巖像云,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蚂夕,居然都是意外死亡迅诬,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門婿牍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)侈贷,“玉大人,你說(shuō)我怎么就攤上這事牍汹☆砦” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵慎菲,是天一觀的道長(zhǎng)嫁蛇。 經(jīng)常有香客問(wèn)我,道長(zhǎng)露该,這世上最難降的妖魔是什么睬棚? 我笑而不...
    開(kāi)封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮解幼,結(jié)果婚禮上抑党,老公的妹妹穿的比我還像新娘。我一直安慰自己撵摆,他們只是感情好底靠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著特铝,像睡著了一般暑中。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鲫剿,一...
    開(kāi)封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天鳄逾,我揣著相機(jī)與錄音,去河邊找鬼灵莲。 笑死雕凹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播枚抵,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼线欲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了汽摹?” 一聲冷哼從身側(cè)響起询筏,我...
    開(kāi)封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎竖慧,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體逆屡,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡圾旨,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了魏蔗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片砍的。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖莺治,靈堂內(nèi)的尸體忽然破棺而出廓鞠,到底是詐尸還是另有隱情,我是刑警寧澤谣旁,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布床佳,位于F島的核電站,受9級(jí)特大地震影響榄审,放射性物質(zhì)發(fā)生泄漏砌们。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一搁进、第九天 我趴在偏房一處隱蔽的房頂上張望浪感。 院中可真熱鬧,春花似錦饼问、人聲如沸影兽。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)峻堰。三九已至,卻和暖如春驮吱,著一層夾襖步出監(jiān)牢的瞬間茧妒,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工左冬, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留桐筏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓拇砰,卻偏偏與公主長(zhǎng)得像梅忌,于是被迫代替她去往敵國(guó)和親狰腌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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

  • 本篇博客共分以下幾個(gè)模塊來(lái)介紹GCD的相關(guān)內(nèi)容: 多線程相關(guān)概念 多線程編程技術(shù)的優(yōu)缺點(diǎn)比較牧氮? GCD中的三種隊(duì)列...
    dullgrass閱讀 37,851評(píng)論 30 236
  • 從哪說(shuō)起呢琼腔? 單純講多線程編程真的不知道從哪下嘴。踱葛。 不如我直接引用一個(gè)最簡(jiǎn)單的問(wèn)題丹莲,以這個(gè)作為切入點(diǎn)好了 在ma...
    Mr_Baymax閱讀 2,757評(píng)論 1 17
  • 本篇博客共分以下幾個(gè)模塊來(lái)介紹GCD的相關(guān)內(nèi)容: 多線程相關(guān)概念 多線程編程技術(shù)的優(yōu)缺點(diǎn)比較? GCD中的三種隊(duì)列...
    有夢(mèng)想的老伯伯閱讀 1,020評(píng)論 0 4
  • iOS中GCD的使用小結(jié) 作者dullgrass 2015.11.20 09:41*字?jǐn)?shù) 4996閱讀 20199...
    DanDanC閱讀 829評(píng)論 0 0
  • 首先尸诽,還是先總結(jié)一下《寫給大家看的設(shè)計(jì)書》里面關(guān)于顏色都有哪些有趣的點(diǎn)甥材。 那么,接下來(lái)具體的解釋一下設(shè)計(jì)原則中非常...
    Saraking_閱讀 871評(píng)論 1 1