有时须要多个异步任务都执行完成以后继续作某些事情, 调度组能够帮咱们实现网络
调度组的简单测试
并发
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ [self group2]; } - (void)group2 { // 1.建立group dispatch_group_t group = dispatch_group_create(); // 建立全局队列 dispatch_queue_t q = dispatch_get_global_queue(0, 0); // 2.建立并发任务 // 入组 - 会监听后续的 block(任意,例如能够是网络方法的block) dispatch_group_enter(group); dispatch_async(q, ^{ NSLog(@"www - %@", [NSThread currentThread]); // 出组的代码 必定放在block的最后一句 通知调度组,任务完成了 dispatch_group_leave(group); }); dispatch_group_enter(group); dispatch_async(q, ^{ NSLog(@"mmm - %@", [NSThread currentThread]); dispatch_group_leave(group); }); // 3.监听调度组 - 等待组中的任务都执行完毕,才会执行 dispatch_group_notify(group, dispatch_get_main_queue(), ^{ NSLog(@"over"); }); }