如果有多個執行任務,我們希望他們都執行完成后執行某一操作,可以采用調度組。
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、調度組相當于一個調度表單,每個異步操作進入組的時候登記,執行完成的時候,退出組,這樣當組檢測到沒有操作的時候就進行反饋。