本文源自本人的学习记录整理与理解,其中参考阅读了部分优秀的博客和书籍,尽量以通俗简单的语句转述。引用到的地方如有遗漏或未能一一列举原文出处还望见谅与指出,另文章内容如有不妥之处还望指教,万分感谢 !
写在前面,队列可分为:串行队列和并发队列
队列组是什么 ?
队列组就是把多个队列组合起来使用。
用队列组来解决一下问题
- 如何共GCD实现以下功能:
- 异步并发执行任务1、任务2
- 等任务1、任务2都执行完毕后,在回到主线程执行任务3
- (void)test
{
//1. 创建队列组
dispatch_group_t group = dispatch_group_create();
//2. 两种创建方式
dispatch_queue_t queue = dispatch_queue_create("myqueue", DISPATCH_QUEUE_CONCURRENT);
// dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
//3. 异步并发执行任务1、任务2
dispatch_group_async(group, queue, ^{
NSLog(@"任务1 - %@",[NSThread currentThread]);
});
dispatch_group_async(group, queue, ^{
NSLog(@"任务2 - %@",[NSThread currentThread]);
});
//4. 等任务1、任务2都执行完毕后,在回到主线程执行任务3
dispatch_group_notify(group, queue, ^{
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"任务3 - %@",[NSThread currentThread]);
});
});
}

网友评论