如果有多个执行任务,我们希望他们都执行完成后执行某一操作,可以采用调度组。
1、创建调度组:
dispatch_group_t group = dispatch_group_create();
2、创建并发任务:
// 创建并发队列
dispatch_queue_t queue = dispatch_queue_create("A", DISPATCH_QUEUE_CONCURRENT);
for (int i = 0; i < 10; i++) {
// 添加多个并发异步操作到调度组
dispatch_group_async(group, queue, ^{
// 执行异步任务
});
}
3、接收通知:
// 当group中所有操作执行完成后发出通知
dispatch_group_notify(group, queue, ^{
NSLog(@"ending work done in %@", [NSThread currentThread]);
});
注意:
1、串行队列也是可以使用调度组的,并行用的比较多。
2、调度组相当于一个调度表单,每个异步操作进入组的时候登记,执行完成的时候,退出组,这样当组检测到没有操作的时候就进行反馈。