美文网首页
并发数据顺序执行

并发数据顺序执行

作者: 指尖的跳动 | 来源:发表于2017-10-25 16:11 被阅读7次

dispatch_semaphore_t sem = dispatch_semaphore_create(1);

dispatch_queue_t queue = dispatch_queue_create("testBlock", NULL);

dispatch_async(queue, ^{

dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

NSLog(@"1");

dispatch_semaphore_signal(sem);

});

});

dispatch_async(queue, ^{

dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);

NSLog(@"2");

dispatch_semaphore_signal(sem);

});

dispatch_async(queue, ^{

dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

NSLog(@"3");

dispatch_semaphore_signal(sem);

});

});

dispatch_async(queue, ^{

dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);

NSLog(@"4");

dispatch_semaphore_signal(sem);

});

著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

相关文章

  • 并发数据顺序执行

    dispatch_semaphore_t sem = dispatch_semaphore_create(1); ...

  • 【操作系统】2.1 进程控制

    1.程序的并发 1.1 顺序执行和并发执行 程序有两种执行方式:① 顺序执行 ② 并发执行 顺序执行:一个独立功能...

  • Go:Memory Model

    Go的内存模型 看完这篇文章你会明白 一个Go程序在启动时的执行顺序 并发的执行顺序 并发环境下如何保证数据的同步...

  • 结合 Promise.all 和 Promise.race 功能

    今天,公司内大神问我 Promise 有没有类似 Promise.all 多个并发执行的并且保证数据的顺序,但是又...

  • GCD 多个网络请求/任务并发或顺序执行

    GCD的使用:多个网络请求/任务并发或顺序执行,所有的网络请求/任务都结束之后再执行数据操作。 Demo地址:De...

  • 1-5linux系统编程——线程并发

    线程并发要求 线程并发性 同步:进程/线程中的部分指令需要按照一定的顺序前后执行异步:进程/线程之前的指令执行顺序...

  • GCD篇(2)

    这里的运行顺序都是指执行顺序,如果是异步回调方式的执行顺序要分情况。 1.group之并发异步 运行结果 disp...

  • 多个网络请求并发执行、顺序执行

    我们在开发中可能会遇到多个网络请求的需求,比如一个界面有两个请求,tableView的数据源及表头,需要等两个请求...

  • iOS多线程-并发队列

    GCD 并发队列 并发队列,异步执行 问题:1.会开几条线程?会开多条线程,线程数量是由GCD来决定2.会顺序执行...

  • go并发临时

    GO并发使用goroutine运行程序,检测并修正状态,利用通道共享数据。通常程序会被编写为一个顺序执行并完成一个...

网友评论

      本文标题:并发数据顺序执行

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