dispatch_group_t group = dispatch_group_create();
dispatch_group_async(dispatch_group_t group, dispatch_queue_t queue, ^(void)block)
// 群组-统一监控一组任务 dispatch_group_t group = dispatch_group_create(); dispatch_queue_t q = dispatch_get_global_queue(0, 0); // 添加任务 // group 负责监控任务,queue 负责调度任务 dispatch_group_async(group, q, ^{ [NSThread sleepForTimeInterval:1.0]; NSLog(@"任务1 %@", [NSThread currentThread]); }); dispatch_group_async(group, q, ^{ NSLog(@"任务2 %@", [NSThread currentThread]); }); dispatch_group_async(group, q, ^{ NSLog(@"任务3 %@", [NSThread currentThread]); }); // 监听所有任务完成 - 等到 group 中的所有任务执行完毕后,"由队列调度 block 中的任务异步执行!" dispatch_group_notify(group, dispatch_get_main_queue(), ^{ // 修改为主队列,后台批量下载,结束后,主线程统一更新UI NSLog(@"OK %@", [NSThread currentThread]); }); NSLog(@"come here");
// 群组-统一监控一组任务 dispatch_group_t group = dispatch_group_create(); dispatch_queue_t q = dispatch_get_global_queue(0, 0); // 1> 入组 -> 之后的 block 会被 group 监听 // dispatch_group_enter 一定和 dispatch_group_leave 要配对出现 dispatch_group_enter(group); dispatch_async(q, ^{ NSLog(@"task1 %@", [NSThread currentThread]); // block 的末尾,所有任务执行完毕后,添加一个出组 dispatch_group_leave(group); }); // 再次入组 dispatch_group_enter(group); dispatch_async(q, ^{ [NSThread sleepForTimeInterval:1.0]; NSLog(@"task2 %@", [NSThread currentThread]); // block 的末尾,所有任务执行完毕后,添加一个出组 dispatch_group_leave(group); }); // 群组结束 dispatch_group_notify(group, dispatch_get_main_queue(), ^{ NSLog(@"OVER"); }); NSLog(@"come here");
dispatch_group_wait(dispatch_group_t group, dispatch_time_t timeout)
原文:http://blog.csdn.net/u011058732/article/details/44540063