iOS GCD

1、組:dispatch_group
多個(gè)網(wǎng)絡(luò)請(qǐng)求執(zhí)行完,再執(zhí)行刷新

dispatch_group_t group = dispatch_group_create();
NSLog(@"開始執(zhí)行");

dispatch_group_enter(group);
dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
   NSLog(@"網(wǎng)絡(luò)請(qǐng)求1");
   dispatch_group_leave(group);
}) ;

dispatch_group_enter(group);
dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
   NSLog(@"網(wǎng)絡(luò)請(qǐng)求2");
   dispatch_group_leave(group);
}) ;

dispatch_group_enter(group);
dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
   NSLog(@"網(wǎng)絡(luò)請(qǐng)求3");
   dispatch_group_leave(group);
}) ;

dispatch_group_notify(group, dispatch_get_main_queue(), ^{
     NSLog(@"刷新界面");
 });
dispatch_group_wait(group, DISPATCH_TIME_FOREVER) ;
NSLog(@"等我一下");

以上代碼運(yùn)行打?。?/p>

開始執(zhí)行
網(wǎng)絡(luò)請(qǐng)求1
網(wǎng)絡(luò)請(qǐng)求2
網(wǎng)絡(luò)請(qǐng)求3
等我一下
刷新界面

2、dispatch_once 通常在創(chuàng)建單例時(shí)使用
3、dispatch_after 延遲執(zhí)行
4、dispatch_barrier_async 柵欄函數(shù)
分割異步任務(wù)

dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
   for (int i = 0; i< 3; i++) {
         NSLog(@"任務(wù)1");
    }
}) ;

dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
   for (int i = 0; i< 3; i++) {
         NSLog(@"任務(wù)2");
    }
}) ;

dispatch_barrier_async(dyConcurrent, ^{
        
        NSLog(@"攔一下");
    });

dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
   for (int i = 0; i< 3; i++) {
         NSLog(@"任務(wù)3");
    }
}) ;

dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
   for (int i = 0; i< 3; i++) {
         NSLog(@"任務(wù)4");
    }
}) ;

打印結(jié)果:121212攔一下343434

5、dispatch_apply 快速遍歷
6、信號(hào)量 dispatch_semaphore
可控制最大并發(fā)

dispatch_semaphore_t  cacheSemphore =  dispatch_semaphore_create(5);
for (int i = 0; i< 10; i++) {
     dispatch_async(dispatch_queue_create("dyConcurrent1", DISPATCH_QUEUE_CONCURRENT), {
         dispatch_semaphore_wait(cacheSemphore , DISPATCH_TIME_FOREVER);
         NSLog(@"任務(wù)%ld",(long)i);
         sleep(1);
         NSLog(@"到我了");
         dispatch_semaphore_signal(cacheSemphore);
     });
}

打印結(jié)果:

任務(wù)0
任務(wù)1
任務(wù)2
任務(wù)3
任務(wù)4
到我了
到我了
到我了
到我了
到我了
任務(wù)5
任務(wù)6
任務(wù)7
任務(wù)8
任務(wù)9
到我了
到我了
到我了
到我了
到我了
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • GCD 簡(jiǎn)介 GCD 任務(wù)和隊(duì)列 GCD 的使用步驟 GCD 的基本使用(六種組合不同區(qū)別,隊(duì)列嵌套情況區(qū)別,相互...
    tanghaiyang閱讀 403評(píng)論 0 2
  • iOS 開發(fā)之 GCD 不同場(chǎng)景使用[https://www.cnblogs.com/xiaoyouPrince/...
    mayuee閱讀 534評(píng)論 0 0
  • 看了兩遍 iOS 多線程:『GCD』詳盡總結(jié) ,這里我手打一遍加深下映象,僅供自己加深映象使用,具體參考上面的鏈接...
    3c32f188d5a4閱讀 178評(píng)論 0 0
  • 1、GCD簡(jiǎn)介 全名:Grand Central Dispatch,它是蘋果為多核的并行運(yùn)算提出的解決方案,會(huì)合理...
    i_belive閱讀 3,223評(píng)論 0 25
  • GCD 簡(jiǎn)介 https://developer.apple.com/documentation/dispatch...
    coder_my閱讀 358評(píng)論 0 0

友情鏈接更多精彩內(nèi)容