有時須要多個異步任務都執行完成以後繼續作某些事情, 調度組能夠幫咱們實現網絡
調度組的簡單測試
併發
- (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"); }); }