ios多线程操作(八)—— GCD调度组
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)
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。