并发数据顺序执行

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);

});


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Managing Units of Work(管理工作单位) 调度块允许您直接配置队列中各个工作单元的属性。它们还...
    edison0428阅读 8,045评论 0 1
  • 一. 重点: 1.dispatch_queue_create(生成Dispatch Queue) 2.Main D...
    BestJoker阅读 1,599评论 2 2
  • 谈到iOS多线程,一般都会谈到四种方式:pthread、NSThread、GCD和NSOperation。其中,苹...
    攻城狮GG阅读 287评论 0 3
  • 郭相麟 作家是具备写作素养基础的高手,所思所想,所感所悟,脱离不了红尘的经历! 能够植入人心的是文字流淌的画面...
    郭相麟阅读 208评论 0 0
  • 大家好,我是IT修真院深圳分院第02期学员,一枚正直善良的web程序员。 今天给大家分享一下,修真院官网js任务2...
    与其感慨路难行阅读 577评论 0 1