美文网首页
利用dispatch group实现并发多任务

利用dispatch group实现并发多任务

作者: 风___________ | 来源:发表于2017-12-12 13:55 被阅读17次

    需求: 三个并发的网络请求,都完成之后,更新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(), ^{
            // 完成
        });
        
    

    相关文章

      网友评论

          本文标题:利用dispatch group实现并发多任务

          本文链接:https://www.haomeiwen.com/subject/yzqymxtx.html