利用dispatch group实现并发多任务

需求: 三个并发的网络请求,都完成之后,更新UI
实现:利用dispatch group 的dispatch_group_enter(group)和 dispatch_group_leave(group)确保每个任务的完成,即使某个任务是异步的,在所有任务都完成后再执行notify中的代码
代码:

dispatch_group_t upload_group = dispatch_group_create();
    // 并行队列
    dispatch_queue_t upload_queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
    
    // 进入组和离开组必须成对出现,否则会造成死锁
    dispatch_group_enter(upload_group);// 进入组
    dispatch_group_async(upload_group, upload_queue, ^{
        // 任务1
        dispatch_group_leave(upload_group);// 完成之后离开组
    });
    
    dispatch_group_enter(upload_group);// 进入组
    dispatch_group_async(upload_group, upload_queue, ^{
        // 任务2
        dispatch_group_leave(upload_group);// 完成之后离开组
    });

    dispatch_group_notify(upload_group, dispatch_get_main_queue(), ^{
        // 完成
    });
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • NSThread 第一种:通过NSThread的对象方法 NSThread *thread = [[NSThrea...
    攻城狮GG阅读 947评论 0 3
  • iOS 多线程系列 -- 基础概述iOS 多线程系列 -- pthreadiOS 多线程系列 -- NSThrea...
    shannoon阅读 987评论 0 2
  • 在这两部分的系列中,第一个部分的将解释 GCD 是做什么的,并从许多基本的 GCD 函数中找出几个来展示。在第二部...
    透支未来阅读 410评论 0 1
  • 背景 担心了两周的我终于轮到去医院做胃镜检查了!去的时候我都想好了最坏的可能(胃癌),之前在网上查的症状都很相似。...
    Dely阅读 9,389评论 21 42
  • Managing Units of Work(管理工作单位) 调度块允许您直接配置队列中各个工作单元的属性。它们还...
    edison0428阅读 8,222评论 0 1

友情链接更多精彩内容