1.在并行队列执行任务中,如果想让某一个任务先执行完后再执行其后面的任务,此时可以用dispatch_barrier_async,下图是dispatch_barrier_async函数的处理流程。

2.下面用代码体检一下

 dispatch_queue_t queue=dispatch_queue_create("test", DISPATCH_QUEUE_CONCURRENT);dispatch_apply(5, queue, ^(size_t index) {NSLog(@"%ld",index);});dispatch_async(queue, ^{NSLog(@"a");});
//    dispatch_barrier_async(queue, ^{
//        NSLog(@"a");
//    });dispatch_apply(5, queue, ^(size_t index) {NSLog(@"%ld 1",index);});

3.当不采用dispatch_barrier_async时,输出结果如下:

4.当采用dispatch_barrier_async时,输出结果如下:

5.总结

可以看到输出结果的不同,当不采用时a输出可以在它自身任务的后面,采用时也不会出现这样的情况。所以能说明是在并行队列中添加该函数,则会在它前面的block执行完毕后再执行它,而它后面的则在它执行完再执行。

转载于:https://www.cnblogs.com/5ishare/p/4378702.html

GCD之barrier相关推荐

  1. iOS多线程系列之GCD栅栏(barrier)实现同步锁

    多线程编程中很容易出现资源竞争的问题,比如异步读写操作造成数据不同步.那么解决这一问题多线程编程中提供了一种同步机制叫同步锁.iOS中实现同步锁机制的方案不止一种,这里主要介绍一下强大的GCD给出的方 ...

  2. 转 Grand Central Dispatch 基础教程:Part 1/2 -swift

    本文转载,原文地址:http://www.cocoachina.com/ios/20150609/12072.html 原文 Grand Central Dispatch Tutorail for S ...

  3. Grand Central Dispatch 基础教程:Part 1/2

    原文 Grand Central Dispatch Tutorail for Swift: Part 1/2 原文作者:Bjrn Olav Ruud 译者:Ethan Joe 尽管Grand Cent ...

  4. iOS——SDWebImage解读

    前言 在iOS的图片加载框架中,SDWebImage占据了大半壁江山.它提供了UIImageView的一个分类,支持从网络中下载且缓存图片,并设置图片到对应的UIImageView控件或者UIButt ...

  5. iOS多线程开发:几个容易被忽略的细节(马甲包)

    一般情况下,iOS开发者只要会使用GCD.@synchronized.NSLock等几个简单的API,就可以应对大部分多线程开发了,不过这样是否真正做到了多线程安全,又是否真正充分利用了多线程的效率优 ...

  6. iOS多线程开发:几个容易被忽略的细节

    一般情况下,iOS开发者只要会使用GCD.@synchronized.NSLock等几个简单的API,就可以应对大部分多线程开发了,不过这样是否真正做到了多线程安全,又是否真正充分利用了多线程的效率优 ...

  7. iOS 线程之GCD的高级使用方法

    之前的一篇关于线程的blog已经为大家介绍了GCD的简单使用方式及样例说明,今天因为项目中有特殊的应用GCD的实例,为大家介绍两种特殊需求的使用GCD的方法. 目的:实现一件事情做完,再做下一件事情. ...

  8. GCD的其他(不常用)方法

    1. GCD的栅栏方法 dispatch_barrier_async 我们有时需要异步执行两组操作,而且第一组操作执行完之后,才能开始执行第二组操作.这样我们就需要一个相当于栅栏一样的一个方法将两组异 ...

  9. Swift3中的 GCD

    第一次翻译文章,水准真是不忍直视,各位轻拍..... 原文链接 ######多线程和并发是当今APP中的必备因素,但是在 iOS SDK中,GCD作为一个管理并发操作的系统级别的API,显得并不是那么 ...

最新文章

  1. 《Linux命令详解手册》——Linux畅销书作家又一力作
  2. 自建通用Makefile 分享
  3. C# - Get HttpWebResponse Text
  4. 用置换破坏您的JUnit5测试
  5. windows 2003 网络负载平衡设置实战
  6. Android之使用MediaPlayer和SurfaceView组件播放一个简单的视频
  7. DataRow 点不出 Select
  8. @程序员,你的技术为啥十年八年也没有进步?
  9. USB转232 转TTL概述
  10. 用python分析股票收益影响因素的方法_【Python】用Python分析股票的收益和风险
  11. ie浏览器总跳转到 http://hao.360.cn
  12. 如何使用CubeMx生成一个DFU工程
  13. 仓库调用 RAP接口管理平台
  14. POI和POI-TL操作Word
  15. model.compile中metrics的参数accuracy
  16. wordcloud 配置项_wordcloud从安装到入门
  17. dddd带带弟弟OCR识别验证码
  18. 计算机找不到无线设备,win10找不到无线设备怎么办_win10电脑找不到无线设备如何解决...
  19. 朱志星:道路交通事故“减量控大”技术治理思路和对策
  20. 电驴!最好的客户端,eMule Xtreme Mod ,没有VeryCD我不怕!

热门文章

  1. 加密保护软件 WinLicense常见问题整理大全(四)
  2. vue2.0-基于elementui换肤[自定义主题]
  3. Swift中的Sequence基本的使用
  4. SQLServer出现不允许保存更改的问题解决
  5. VMware中centos6.5 minimal 使用NAT模式联网
  6. LVS+Keepalive+Nginx实现负载均衡
  7. oracle中时间、日期函数的总结
  8. Android判断设备是否打开WIFI、GPRS数据连接
  9. LeetCode7. 整数反转
  10. c++学习笔记(7) 面向对象思想