美文网首页
GCD 大中枢调度之group

GCD 大中枢调度之group

作者: LV大树 | 来源:发表于2021-05-27 23:44 被阅读0次

    最近吃了这个亏呀。
    涉及到多个异步请求完成后,再刷新界面。
    我想各位必有神通,我这里用的是GCD的派发组。
    创建一个派发组,

    dispatch_group_t group = dispatch_group_create();
    再创建一个并发队列。
    dispatch_queue_t queue = dispatch_queue_create("label", DISPATCH_QUEUE_CONCURRENT);

    dispatch_group_async(group, queue, ^{
    //必须先进入组
    dispatch_group_enter(group);
    //根据你的任务,这里加入一个异步操作,如网络请求。

    完成后调用离开组
    dispatch_group_leave(group);
    });
    dispatch_group_async(group, queue, ^{
    //必须先进入组
    dispatch_group_enter(group);
    //根据你的任务,这里加入另一个异步操作,如网络请求。

    完成后调用离开组
    dispatch_group_leave(group);
    });
    dispatch_group_async(group, queue, ^{
    //必须先进入组
    dispatch_group_enter(group);
    //根据你的任务,这里加入第N个异步操作,如网络请求。

    完成后调用离开组
    dispatch_group_leave(group);
    });

    //当所有组都退出时,会调用这里。然后在主线程刷新你的界面。
    dispatch_group_notify(group, dispatch_get_main_queue(), ^{
    dispatch_async(dispatch_get_main_queue(), ^{
    [self.tableView reloadData];//刷新你的界面。
    });
    });

    千万要小心操作,必须先进入组,最后离开组。

    相关文章

      网友评论

          本文标题:GCD 大中枢调度之group

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