ios-Barrier阻塞
来源:互联网 发布:全网分红系统源码 编辑:程序博客网 时间:2024/06/09 15:17
Barrier主要用于在多个异步操作完成之后,统一的对非线程安全的对象进行更新操作
适合于大规模的I/O操作
当访问数据库或文件的时候,更新数据的时候不能喝其他更新或者读取的操作在同一时间执行,我们也可以使用调度组,也可以用dispatch_barrier_async来解决。
我们在使用Barrier只能用并发队列。这里指定的并发队列应该是自己通过dispatch_queue_create函数创建的。如果你传的是一个串行队列或者全局并发队列,这个函数等同于dispatch_async函数。
多线程去操作线程不安全的类会出现问题,就比如说你并行异步的去下载图片的时候,如果同时的去把这些图片添加到可变数组中的时候。这个时候会有线程不安全的问题,就比如说这个时候存在一个问题,如果多个线程去同时去添加图片进数组,只有一个能成功,所以就会出现问题。这个时候我们就可以用dispatch_barrier_async来解决。大概是这样子的。
//并行队列异步下载图片 for(int i=0;i<100;i++) { //创建并行队列 dispatch_queue_t queue =dispatch_queue_create("hh", DISPATCH_QUEUE_CONCURRENT); dispatch_async(queue, ^{ //模拟下载图片 //等待之前队列中的任务执行完毕之后,再去执行Barrier中的任务 dispatch_barrier_async(queue, ^{ //添加到可变数组中, [self.photoArray addObject:image]; }); }); }
阅读全文
0 0
- ios-Barrier阻塞
- ios之GCD阻塞Barrier
- Barrier
- iOS--GCD的常见用法,group、barrier、semaphore
- iOS 阻塞进程:
- Memory barrier
- Memory barrier
- barrier使用
- Memory barrier
- memory barrier
- memory barrier
- 3G barrier
- Android Barrier
- 队列barrier
- GCD-Barrier
- barrier()函数
- xv6 barrier
- 编译器barrier/CPU memory barrier
- Mongodb 备份 还原 导出 导入 等批量操作
- 如何将Eclipse中的项目迁移到Android Studio 中
- 2. Python入门:字符串和变量
- 分布式和集群的区别 以及理解
- 使用BigDecimal进行精确运算
- ios-Barrier阻塞
- Effective Modern C++翻译系列之Item1
- 在Ubuntu/Linux环境下使用MySQL:启动和关闭MySQL服务
- OpenGL 加载模型
- ConcurrentHashMap源码解析
- jsp内置对象
- 高并发访问,短信炸弹,验证码
- C# 图片Base64 编码,图片格式转换
- 安卓特效 界面控件 直接动态图预览 源码