美文网首页
多线程(三) 队列组的使用

多线程(三) 队列组的使用

作者: PerryMorning | 来源:发表于2020-01-21 11:58 被阅读0次

在开发过程中,我们可能会遇到这样的情况,任务1和任务2可以同时进行,但是任务3和任务4只有等任务1和任务2都完成以后,才可以执行。
这时候如果我们还是只使用并行队列,就不能满足需求。队列组dispatch_group_t就是为了满足这种情况。
使用方法:
1.创建队列组;
2.创建需要执行的队列,并发或者串行;
3.将需要执行的任务1和任务2放在队列组中;
4.执行完任务后,通知需要继续执行的任务3、任务4。

具体使用流程如下:

// 创建队列组
    dispatch_group_t group = dispatch_group_create();
    // 创建并发队列
    dispatch_queue_t queue = dispatch_queue_create("my_queue", DISPATCH_QUEUE_CONCURRENT);
    
    // 添加异步任务
    dispatch_group_async(group, queue, ^{
        for (int i = 0; i < 5; i++) {
            NSLog(@"任务1-%@", [NSThread currentThread]);
        }
    });
    
    dispatch_group_async(group, queue, ^{
        for (int i = 0; i < 5; i++) {
            NSLog(@"任务2-%@", [NSThread currentThread]);
        }
    });
    
    // 等前面的任务执行完毕后,会自动执行这个任务
    dispatch_group_notify(group, queue, ^{
        for (int i = 0; i < 5; i++) {
            NSLog(@"任务3-%@", [NSThread currentThread]);
        }
    });
    
    dispatch_group_notify(group, dispatch_get_main_queue(), ^{
        for (int i = 0; i < 5; i++) {
            NSLog(@"任务4-%@", [NSThread currentThread]);
        }
    });

这样就可以完美解决我们之前遇到的任务3和任务4要在任务1和任务2完成之后再执行的需求了。

需要注意的是:
任务3和任务4可以根据具体需求,选择在当前队列或者其他队列(包含主队列)执行任务。

相关文章

  • 多线程02

    多线程2 GCD队列组: 基本使用: 常用函数 队列和组队列的区别 队列:封装任务,添加任务到队列 组队列:封装任...

  • 多线程(三) 队列组的使用

    在开发过程中,我们可能会遇到这样的情况,任务1和任务2可以同时进行,但是任务3和任务4只有等任务1和任务2都完成以...

  • 多线程(三)

    上篇多线程(二)我们看了多线程的死锁和队列组的使用,下面我们再来看看多线程的安全隐患代码详见 gitHub_De...

  • 六. GCD队列组

    一. 队列组的基本概念 队列组是用来管理队列中任务的执行 一般使用步骤:创建队列组创建队列使用队列组异步函数来封装...

  • Objective-C基础-多线程

    1、常见多线程方案 2、队列与同步异步 例子 练习 3、队列组的使用 异步并发执行任务1、任务2等任务1、任务2都...

  • RocketMQ消息队列还没入门就想放弃

    题外话 什么情况下的异步操作需要使用消息队列而不是多线程? 消息队列和多线程两者并不冲突,多线程可以作为队列的生产...

  • 为什么发送邮件要使用消息队列而不是多线程

    什么情况下的异步操作使用消息队列而不是多线程?消息队列和多线程两者并不冲突,多线程可以作为队列的生产者和消费者。使...

  • python多线程的使用

    python多线程的使用 后续还会更新其他方法实现的多线程。 Queue实现多线程 通过队列实现多线程 启动一定数...

  • GCD-队列组

    1.队列组的基本概念 1.队列组(dispatch_group_t):用来管理队列中任务的执行。2.队列组的使用步...

  • 队列和线程

    [iOS多线程中,队列和执行的排列组合结果分析] 多线程中的队列有:串行队列,并发队列,全局队列,主队列。 执行的...

网友评论

      本文标题:多线程(三) 队列组的使用

      本文链接:https://www.haomeiwen.com/subject/ssfezctx.html