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執行完,再執行;