1. 调度组: 监听一组任务统一完成之后,执行某一个操作
2. 第一种方式:
//调度组
-(void) group1{
//1.创建 group
dispatch_group_t group = dispatch_group_create();
dispatch_queue_t q = dispatch_get_global_queue(0, 0);
//2.创建并发任务
dispatch_group_async(group, q, ^{
[NSThread sleepForTimeInterval:3.0];
NSLog(@"AAAAA - %@", NSThread.currentThread);
});
dispatch_group_async(group, q, ^{
NSLog(@"BBBBB - %@", NSThread.currentThread);
});
//3.统一获取通知
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
NSLog(@"over");
});
}
3. 第二种方式:
//void
// dispatch_group_async(dispatch_group_t group, dispatch_queue_t queue, dispatch_block_t block)
// {
//入组 - 会监听后续的 block 的执行
//入组和出组一定要配对出现!
// dispatch_group_enter(group);
// dispatch_async(queue, ^{
// block();
//出组 - 通知调度组,任务完成
//出组的代码,一定放在 block 的最后一句
// dispatch_group_leave(group);
// });
// }
//调度组
-(void) group2{
//1.创建 group
dispatch_group_t group = dispatch_group_create();
dispatch_queue_t q = dispatch_get_global_queue(0, 0);
//2.创建并发任务
dispatch_group_enter(group);
dispatch_async(q, ^{
[NSThread sleepForTimeInterval:3.0];
NSLog(@"AAA - %@",NSThread.currentThread);
dispatch_group_leave(group);
});
dispatch_group_enter(group);
dispatch_async(q, ^{
[NSThread sleepForTimeInterval:1.2];
NSLog(@"BBB - %@",NSThread.currentThread);
dispatch_group_leave(group);
});
//3.统一获取通知
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
NSLog(@"over");
});
}