GCD之barrier
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相关推荐
- iOS多线程系列之GCD栅栏(barrier)实现同步锁
多线程编程中很容易出现资源竞争的问题,比如异步读写操作造成数据不同步.那么解决这一问题多线程编程中提供了一种同步机制叫同步锁.iOS中实现同步锁机制的方案不止一种,这里主要介绍一下强大的GCD给出的方 ...
- 转 Grand Central Dispatch 基础教程:Part 1/2 -swift
本文转载,原文地址:http://www.cocoachina.com/ios/20150609/12072.html 原文 Grand Central Dispatch Tutorail for S ...
- Grand Central Dispatch 基础教程:Part 1/2
原文 Grand Central Dispatch Tutorail for Swift: Part 1/2 原文作者:Bjrn Olav Ruud 译者:Ethan Joe 尽管Grand Cent ...
- iOS——SDWebImage解读
前言 在iOS的图片加载框架中,SDWebImage占据了大半壁江山.它提供了UIImageView的一个分类,支持从网络中下载且缓存图片,并设置图片到对应的UIImageView控件或者UIButt ...
- iOS多线程开发:几个容易被忽略的细节(马甲包)
一般情况下,iOS开发者只要会使用GCD.@synchronized.NSLock等几个简单的API,就可以应对大部分多线程开发了,不过这样是否真正做到了多线程安全,又是否真正充分利用了多线程的效率优 ...
- iOS多线程开发:几个容易被忽略的细节
一般情况下,iOS开发者只要会使用GCD.@synchronized.NSLock等几个简单的API,就可以应对大部分多线程开发了,不过这样是否真正做到了多线程安全,又是否真正充分利用了多线程的效率优 ...
- iOS 线程之GCD的高级使用方法
之前的一篇关于线程的blog已经为大家介绍了GCD的简单使用方式及样例说明,今天因为项目中有特殊的应用GCD的实例,为大家介绍两种特殊需求的使用GCD的方法. 目的:实现一件事情做完,再做下一件事情. ...
- GCD的其他(不常用)方法
1. GCD的栅栏方法 dispatch_barrier_async 我们有时需要异步执行两组操作,而且第一组操作执行完之后,才能开始执行第二组操作.这样我们就需要一个相当于栅栏一样的一个方法将两组异 ...
- Swift3中的 GCD
第一次翻译文章,水准真是不忍直视,各位轻拍..... 原文链接 ######多线程和并发是当今APP中的必备因素,但是在 iOS SDK中,GCD作为一个管理并发操作的系统级别的API,显得并不是那么 ...
最新文章
- 《Linux命令详解手册》——Linux畅销书作家又一力作
- 自建通用Makefile 分享
- C# - Get HttpWebResponse Text
- 用置换破坏您的JUnit5测试
- windows 2003 网络负载平衡设置实战
- Android之使用MediaPlayer和SurfaceView组件播放一个简单的视频
- DataRow 点不出 Select
- @程序员,你的技术为啥十年八年也没有进步?
- USB转232 转TTL概述
- 用python分析股票收益影响因素的方法_【Python】用Python分析股票的收益和风险
- ie浏览器总跳转到 http://hao.360.cn
- 如何使用CubeMx生成一个DFU工程
- 仓库调用 RAP接口管理平台
- POI和POI-TL操作Word
- model.compile中metrics的参数accuracy
- wordcloud 配置项_wordcloud从安装到入门
- dddd带带弟弟OCR识别验证码
- 计算机找不到无线设备,win10找不到无线设备怎么办_win10电脑找不到无线设备如何解决...
- 朱志星:道路交通事故“减量控大”技术治理思路和对策
- 电驴!最好的客户端,eMule Xtreme Mod ,没有VeryCD我不怕!
热门文章
- 加密保护软件 WinLicense常见问题整理大全(四)
- vue2.0-基于elementui换肤[自定义主题]
- Swift中的Sequence基本的使用
- SQLServer出现不允许保存更改的问题解决
- VMware中centos6.5 minimal 使用NAT模式联网
- LVS+Keepalive+Nginx实现负载均衡
- oracle中时间、日期函数的总结
- Android判断设备是否打开WIFI、GPRS数据连接
- LeetCode7. 整数反转
- c++学习笔记(7) 面向对象思想