GCD 中的group 使用
在最近的业务场景中,考虑到性能的优化,以及建减少服务器的压力,使用到从并行到串行业务的流程。
假设 场景服务中 要对对象A 的属性 成员B 的图片进行上传后,再处理图片路径 然后再提交A的相关数据。我处理的场景方案就是group
使用方式 :
dispatch_group_t group = dispatch_group_create();
dispatch_queue_t mainQueue = dispatch_get_main_queue();
dispatch_group_enter(group);
dispatch_async(mainQueue, ^{
dispatch_group_leave(group);
});
// 组中的队列全部执行完毕后就通知调度组
dispatch_group_notify(g, dispatch_get_main_queue(), ^{
NSLog(@"MainTask: %@", [NSThread currentThread]);
});
//等待组中的任务都执行完毕,才会执行
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
//此处执行 完成组内任务后的内容
});
//等待组中的任务都执行完毕,才会继续执行后续的代码
dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
以上是我删除掉了业务代码所写的组内执行任务结束后 回归串行的方法。
有需求可参考使用
网友评论