GCD理解與使用

并行與并發(fā):

1.并發(fā):當(dāng)有多線程操作時(shí),如果系統(tǒng)只有一個(gè)cpu,根本不可能真正同時(shí)進(jìn)行一個(gè)以上的線程,只能把cup運(yùn)行時(shí)間劃分成若干段,再將時(shí)間分配給各個(gè)線程執(zhí)行,在一個(gè)時(shí)間段的線程代碼運(yùn)行時(shí),其他的處于掛起狀態(tài).

2.并行:系統(tǒng)一個(gè)以上cpu時(shí),一個(gè)cpu執(zhí)行一個(gè)線程,真正意義上的同時(shí)進(jìn)行.

并行隊(duì)列為并發(fā)執(zhí)行,串行隊(duì)列沒有并發(fā).

同步與異步,并行隊(duì)列與串行隊(duì)列綜合使用時(shí),對(duì)線程進(jìn)行分析來理解程序執(zhí)行順序.

1.dispatch_sync:同步追加任務(wù),要等待函數(shù)返回,不會(huì)另起線程.

注意:如果追加到的隊(duì)列為串行隊(duì)列,所在的線程跟當(dāng)前所在線程相同,會(huì)造成相互等待,程序崩潰.(所以不能再主線程當(dāng)中執(zhí)行 dispatch_sync(dispatch_get_main_queue(), block))

2.dispatch_async:異步追加任務(wù),不等待函數(shù)返回,一般新追加任務(wù)時(shí)會(huì)另起線程,再次追加任務(wù)時(shí)要看追加的隊(duì)列:若為DISPATCH_QUEUE_SERIAL(串行隊(duì)列),則不會(huì)另起線程,和上一次任務(wù)在同一線程當(dāng)中,并等待上一個(gè)任務(wù)執(zhí)行完成后,再執(zhí)行; 若為DISPATCH_QUEUE_CONCURRENT(并行隊(duì)列),任務(wù)并發(fā)執(zhí)行,會(huì)另起線程(可能是前面任務(wù)結(jié)束后釋放的線程).要注意一點(diǎn):通過dispatch_semaphore_t(信號(hào)量)可設(shè)置并行隊(duì)列的最大并發(fā)量.

dispatch_group_t:

將隊(duì)列放在group中執(zhí)行

dispatch_group_notify:

等待group中任務(wù)全部執(zhí)行完畢后執(zhí)行其中追加的任務(wù).若使用dispatch_group_enter將空任務(wù)放到group中,必須使用dispatch_group_leave取出空任務(wù),才能執(zhí)行dispatch_group_notify中的任務(wù),否則一直等待.

dispatch_barrier_sync,dispatch_barrier_async(設(shè)置屏障)

共同點(diǎn):

1、等待在它前面插入隊(duì)列的任務(wù)先執(zhí)行完

2昌犹、等待他們自己的任務(wù)執(zhí)行完再執(zhí)行后面的任務(wù)

不同點(diǎn):

1、dispatch_barrier_sync將自己的任務(wù)插入到隊(duì)列的時(shí)候,需要等待自己的任務(wù)結(jié)束之后才會(huì)繼續(xù)插入被寫在它后面的任務(wù),然后執(zhí)行它們

2、dispatch_barrier_async將自己的任務(wù)插入到隊(duì)列之后螃诅,不會(huì)等待自己的任務(wù)結(jié)束状囱,它會(huì)繼續(xù)把后面的任務(wù)插入到隊(duì)列术裸,然后等待自己的任務(wù)結(jié)束后才執(zhí)行后面任務(wù)。

dispatch_apply:

多次執(zhí)行某個(gè)任務(wù)

定時(shí)器(與NSTimer不同,不受RunLoop約束亭枷,比NSTimer更加準(zhǔn)時(shí),可暫停dispatch_suspend)

dispatch_source_t soure;

- (void)targetSource{

dispatch_queue_t queue = dispatch_queue_create("queue", DISPATCH_QUEUE_CONCURRENT);

soure = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);

dispatch_source_set_timer(soure, DISPATCH_TIME_NOW, 1, 1);

dispatch_source_set_event_handler(soure, ^{

NSLog(@"soure_event:==%@", [NSThread currentThread]);

});

dispatch_resume(soure);

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市叨粘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌升敲,老刑警劉巖答倡,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異驴党,居然都是意外死亡瘪撇,警方通過查閱死者的電腦和手機(jī)港庄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鹏氧,“玉大人,你說我怎么就攤上這事把还。” “怎么了笨篷?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵瓣履,是天一觀的道長。 經(jīng)常有香客問我袖迎,道長腺晾,這世上最難降的妖魔是什么辜贵? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮托慨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘厚棵。我一直安慰自己,他們只是感情好狠轻,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布彬犯。 她就那樣靜靜地躺著,像睡著了一般谐区。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上卢佣,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音虚茶,去河邊找鬼。 笑死嘹叫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的罩扇。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼消约,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了或粮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤氯材,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后氢哮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡听盖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年生闲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了媳溺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碍讯。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蝎困,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情倍啥,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布虽缕,位于F島的核電站,受9級(jí)特大地震影響氮趋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜剩胁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一昵观、第九天 我趴在偏房一處隱蔽的房頂上張望晾腔。 院中可真熱鬧啊犬,春花似錦、人聲如沸觉至。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至沃暗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間孽锥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來泰國打工唬涧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人碎节。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓抵卫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親介粘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

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