GCD 之 dispatch_barrier_async
2016-02-26 15:13
369 查看
先看段代码
dispatch_queue_t concurrentQueue = dispatch_queue_create("my.concurrent.queue", DISPATCH_QUEUE_CONCURRENT);
dispatch_async(concurrentQueue, ^(){
NSLog(@"dispatch-1");
});
dispatch_async(concurrentQueue, ^(){
NSLog(@"dispatch-2");
});
dispatch_barrier_async(concurrentQueue, ^(){
NSLog(@"dispatch-barrier");
});
dispatch_async(concurrentQueue, ^(){
NSLog(@"dispatch-3");
});
dispatch_async(concurrentQueue, ^(){
NSLog(@"dispatch-4");
});
dispatch_barrier_async 作用是在并行队列中,等待前面两个操作并行操作完成,这里是并行输出
dispatch-1,dispatch-2
然后执行
dispatch_barrier_async中的操作,(现在就只会执行这一个操作)执行完成后,即输出
"dispatch-barrier,
最后该并行队列恢复原有执行状态,继续并行执行
dispatch-3,dispatch-4
dispatch_queue_t concurrentQueue = dispatch_queue_create("my.concurrent.queue", DISPATCH_QUEUE_CONCURRENT);
dispatch_async(concurrentQueue, ^(){
NSLog(@"dispatch-1");
});
dispatch_async(concurrentQueue, ^(){
NSLog(@"dispatch-2");
});
dispatch_barrier_async(concurrentQueue, ^(){
NSLog(@"dispatch-barrier");
});
dispatch_async(concurrentQueue, ^(){
NSLog(@"dispatch-3");
});
dispatch_async(concurrentQueue, ^(){
NSLog(@"dispatch-4");
});
dispatch_barrier_async 作用是在并行队列中,等待前面两个操作并行操作完成,这里是并行输出
dispatch-1,dispatch-2
然后执行
dispatch_barrier_async中的操作,(现在就只会执行这一个操作)执行完成后,即输出
"dispatch-barrier,
最后该并行队列恢复原有执行状态,继续并行执行
dispatch-3,dispatch-4
相关文章推荐
- 通过git remote 建立远程仓库
- 互联网协议入门——提高篇
- com.jacob.com.ComFailException: Can't co-create object解决办法
- 关于坐标系(大地坐标、平面坐标、投影、北京54、西安80、WGS84)的一些理解
- Servlet_09_ServletContext(续3)
- 老李分享:为何要使用 Web Services
- .NET框架中的委托和事件
- nginx 禁止某个IP访问立网站的设置方法
- 《leetCode》:Path Sum
- ELK日志分析系统-Logstack
- python语言特性(四)
- Unity5.3 JSON的序列化
- Android如何获取系统高度、标题栏和状态栏高度
- tomcat修改控制台日志输出到文件的解决办法__http://wenku.baidu.com/link?url=inKWTkePOVaNcN9o07BGiiOgHaQefnUAhXfj9Bmn-BX
- OC初级基础语法与内存管理MRC
- Block-----镜像拷贝
- SVN连接不上
- PowerDesigner使用教程
- git实践
- 什么是真正的程序员?