博客> GCD使用dispatch_group_notify、dispatch_group_enter、dispatch_group_leave处理多线程同步操作
GCD使用dispatch_group_notify、dispatch_group_enter、dispatch_group_leave处理多线程同步操作
1小时前 评论:0 阅读:366 lvhahaha
GCD dispatch_group_notify

有时在开发过程中,一个页面或者一个逻辑需要多个请求接口,然后这几个请求还需要处理完成才开始刷新界面。那么这是就用到GCD多线程了。

1.首先创建group dispatch_group_t dispatchGroup = dispatch_group_create(); 2.在每次请求之前进行 dispatch_group_enter:这个enter的意义是:通知group,下面的任务马上要放到group中执行了。 3.在每次请求结束之后 dispatch_group_leave:这个leave的意义是:通知group,任务完成了,该任务要从group中移除了

这两种通知可以在多线程间自由穿梭的。

4.当所有请求结束之后 a.currentQueue : dispatch_get_main_queue() b.currentQueue :dispatch_get_global_queue(0, 0)。 注意 currentQueue 选择以上两种。 dispatch_group_notify(group, currentQueue, ^{ NSLog(@"%@---全部结束。。。",[NSThread currentThread]); });

结论: 在开启了多线程执行任务时,若使用了dispatch_group_notify、dispatch_group_enter、dispatch_group_leave,也能有效的保证了等所有的子线程任务处理完后,有一个处理最后结果的地方。

收藏
1
sina weixin mail 回到顶部