1 dispatch_group_notify,dispatch_group_async执行完后再执行notify;
2 dispatch_group_wait后代码等group执行完,再执行;
例1 dispatch_group_notify
- (void)groupAsyncSummit_notify{
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, _mainQueue, ^{
[self doSometing:@"1"];
});
dispatch_group_async(group, _mainQueue, ^{
[self doSometing:@"2"];
});
dispatch_group_notify(group, _globalQueue, ^{
[self doSometing:@"notify"];
});
dispatch_group_async(group, _globalQueue, ^{
[self doSometing:@"3"];
[self doSometing:@"3-1"];
});
[self doSometing:@"4"];
}
输出:43并发,再3-1、1并发,再执行2,最后执行notify;
说明:
dispatch_group_async搭_globalQueue,异步并发执行;
dispatch_group_async搭 _mainQueue,异步串行,加在_mainQueue队列的最后;
例2 dispatch_group_wait,
- (void)groupAsyncSummit_wait{
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, _globalQueue, ^{
[self doSometing:@"1"];
});
dispatch_group_async(group, _globalQueue, ^{
[self doSometing:@"2"];
});
dispatch_group_async(group, _globalQueue, ^{
[self doSometing:@"3"];
});
dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
[self doSometing:@"4"];
}
输出:1 2 3 并发执行 , 4最后执行
说明:dispatch_group_wait后代码等group执行完,再执行;