美文网首页
iOS 按顺序异步执行线程

iOS 按顺序异步执行线程

作者: 夜空丶 | 来源:发表于2022-02-22 11:36 被阅读0次

GCD方式,关键是信号量的三个重要用法:
创建信号量为0dispatch_semaphore_t sema = dispatch_semaphore_create(0);
进入信号量dispatch_semaphore_signal(sema);这里请求信号量 +1 为1
等待信号量dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);走到这里如果信号量为0 则不再执行下面的代码 一直等待 信号量不是0 出现 才会执行下面代码,然后信号量为 - 1

//创建线程池
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    
    //创建group
    dispatch_group_t group = dispatch_group_create();
    //创建信号量
    dispatch_semaphore_t sema = dispatch_semaphore_create(0);
    
    for (int i = 0; i < 10; i++) {
        dispatch_group_async(group, queue, ^{
            NSLog(@"task%i",i);
            //进入信号量
            dispatch_semaphore_signal(sema);
        });
        //等待信号量
        dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
    }
//结束后
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
        dispatch_group_async(group, queue, ^{
            NSLog(@"task11");
            //进入信号量
        });
    });

相关文章

  • iOS 按顺序异步执行线程

    GCD方式,关键是信号量的三个重要用法:创建信号量为0dispatch_semaphore_t sema = di...

  • iOS 多线程-CGD

    串行队列同步执行,不开启新线程,任务按顺序执行 串行队列异步执行,会开启新线程(1个),任务按照顺序执行 并行队列...

  • C#沉淀-异步编程 一

    什么是异步 任务以固定的顺序被执行叫做同步,任务不按固定顺序执行则叫做异步 关于进程与线程 启动程序时,系统会在内...

  • Swift GCD 的串行队列与并行队列

    队列异步是否阻塞当前线程同步是否阻塞当前线程执行顺序串行队列否是按添加顺序并行队列否是同时执行,但会被同步阻塞 串...

  • 一、多线程基础

    多线程基础 基本概念 同步、异步 同步 线程B要等待线程A的执行结果之后才能执行。要顺序执行 异步 相对同步来说,...

  • iOS 多线程

    线程概念 同步: 任务按顺序执行, 有先后顺序, 执行完一个才能执行另一个任务, 任务有一个执行者 异步 有多个执...

  • 同步和异步

    同步概念 由于JavaScript是单线程的,在浏览器里代码按顺序执行,这就是同步。 异步概念 异步的来源:Jav...

  • iOS开发知识点总结(一)

    1、获取当前系统版本号 2、串行与并行,同步与异步 串行同步:任务按顺序执行,按顺序结束,整个过程只会开一条线程。...

  • iOS多个网络请求同步执行

    这里所说的同步执行是指多个网络请求按顺序执行,但这些请求还是可以在异步线程处理的不会阻塞主线程;首先我们看一个实际...

  • iOS 多线程基础

    转自:iOS 多线程基础 - 简书 多线程同步和异步的区别?IOS中如何实现多线程的同步? 异步:可以同时执行多条...

网友评论

      本文标题:iOS 按顺序异步执行线程

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