GCD 学习之 dispatch_group

????如果想在dispatch_queue中所有的任务执行完成后在做某种操作,在串行队列中,可以把该操作放到最后一个任务执行完成后继续,但是在并行队列中怎么做呢。这就有dispatch_group 成组操作。比如

dispatch_queue_t dispatchQueue = dispatch_queue_create("ted.queue.next", DISPATCH_QUEUE_CONCURRENT);

dispatch_group_t dispatchGroup = dispatch_group_create();

dispatch_group_async(dispatchGroup, dispatchQueue, ^(){

NSLog(@"dispatch-1");

});

dispatch_group_async(dispatchGroup, dispatchQueue, ^(){

NSLog(@"dspatch-2");

});

dispatch_group_notify(dispatchGroup, dispatch_get_main_queue(), ^(){

NSLog(@"end");

});

上面的 log1 和log2输出顺序不定,因为是在并行队列上执行,当并行队列全部执行完成后,最后到main队列上执行一个操作,保证“end”是最后输出。 另外,这里也可以不用创建自己的并行队列,用全局的global,那个也是个并行队列. dispatch_get_gloable_queue(0,0);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 GCD(Grand Central Dispatch)是在macOS10.6提出来的,后来在iOS4.0被引...
    sunmumu1222阅读 4,363评论 0 2
  • 1. GCD简介 什么是GCD呢?我们先来看看百度百科的解释简单了解下概念 引自百度百科:Grand Centra...
    千寻_544f阅读 3,051评论 0 0
  • iOS中GCD的使用小结 作者dullgrass 2015.11.20 09:41*字数 4996阅读 20199...
    DanDanC阅读 4,487评论 0 0
  • 人生的行李箱里装着我们的信念,下面是我儿时的信念 疾病:疾病是身体上的痛苦,但是终于可以休息了,小时候生病我就可以...
    燕梓妈妈阅读 1,332评论 0 0
  • 今夜 现在 让灵魂与肉体 在这里交割 让纯洁 纯洁 把卑贱还给卑贱 让思想 把灵魂撕裂成碎片 好成就本来的模样 纯...
    伤心的阿木阅读 1,547评论 1 2