iOS 底层 -多线程-队列组应用

2020-04-08  本文已影响0人  水中的蓝天

本文源自本人的学习记录整理与理解,其中参考阅读了部分优秀的博客和书籍,尽量以通俗简单的语句转述。引用到的地方如有遗漏或未能一一列举原文出处还望见谅与指出,另文章内容如有不妥之处还望指教,万分感谢 !

写在前面,队列可分为:串行队列和并发队列

队列组是什么 ?

队列组就是把多个队列组合起来使用。

用队列组来解决一下问题

  1. 如何共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]);
        });
    });
    
}

执行结果@2x.png
上一篇 下一篇

猜你喜欢

热点阅读