iOS之GCD再谈(dispatch_barrier_async)
来源:互联网 发布:日本 久住 英语 知乎 编辑:程序博客网 时间:2024/05/16 04:57
假如有这么一个需求,8个线程,前面4个要并行执行,执行完后执行第5个,然后在并行执行后面3个。
那么就要考虑dispatch_barrier_async了
/* dispatch_barrier_async 作用是在并行队列中,等待前面几个操作并行操作完成,然后执行dispatch_barrier_async中的操作, 然后再恢复并行队列所有的执行状态,继续并行执行 */#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad{ [super viewDidLoad]; //创建一个并行队列 dispatch_queue_t concurrentQueue=dispatch_queue_create("gujinyue", DISPATCH_QUEUE_CONCURRENT); dispatch_async(concurrentQueue, ^{ NSLog(@"dispatch_1_begin"); sleep(3); NSLog(@"dispatch_1_end"); }); dispatch_async(concurrentQueue, ^{ NSLog(@"dispatch_2_begin"); sleep(3); NSLog(@"dispatch_2_end"); }); dispatch_async(concurrentQueue, ^{ NSLog(@"dispatch_3_begin"); sleep(3); NSLog(@"dispatch_3_end"); }); dispatch_async(concurrentQueue, ^{ NSLog(@"dispatch_4_begin"); sleep(3); NSLog(@"dispatch_4_end"); }); dispatch_barrier_async(concurrentQueue, ^{ NSLog(@"dispatch_barrier_begin"); sleep(3); NSLog(@"dispatch_barrier_end"); }); dispatch_async(concurrentQueue, ^{ NSLog(@"dispatch_5_begin"); sleep(3); NSLog(@"dispatch_5_end"); }); dispatch_async(concurrentQueue, ^{ NSLog(@"dispatch_6_begin"); sleep(3); NSLog(@"dispatch_6_end"); }); dispatch_async(concurrentQueue, ^{ NSLog(@"dispatch_7_begin"); sleep(3); NSLog(@"dispatch_7_end"); }); }@end
最终效果:
2016-03-06 09:22:48.906 iOS 学习_dispatch_barrier[938:19679] dispatch_1_begin2016-03-06 09:22:48.906 iOS 学习_dispatch_barrier[938:19682] dispatch_2_begin2016-03-06 09:22:48.906 iOS 学习_dispatch_barrier[938:19687] dispatch_3_begin2016-03-06 09:22:48.906 iOS 学习_dispatch_barrier[938:19691] dispatch_4_begin2016-03-06 09:22:51.907 iOS 学习_dispatch_barrier[938:19687] dispatch_3_end2016-03-06 09:22:51.907 iOS 学习_dispatch_barrier[938:19679] dispatch_1_end2016-03-06 09:22:51.907 iOS 学习_dispatch_barrier[938:19682] dispatch_2_end2016-03-06 09:22:51.908 iOS 学习_dispatch_barrier[938:19691] dispatch_4_end2016-03-06 09:22:51.908 iOS 学习_dispatch_barrier[938:19691] dispatch_barrier_begin2016-03-06 09:22:54.910 iOS 学习_dispatch_barrier[938:19691] dispatch_barrier_end2016-03-06 09:22:54.911 iOS 学习_dispatch_barrier[938:19691] dispatch_5_begin2016-03-06 09:22:54.911 iOS 学习_dispatch_barrier[938:19682] dispatch_6_begin2016-03-06 09:22:54.911 iOS 学习_dispatch_barrier[938:19679] dispatch_7_begin2016-03-06 09:22:57.913 iOS 学习_dispatch_barrier[938:19682] dispatch_6_end2016-03-06 09:22:57.913 iOS 学习_dispatch_barrier[938:19691] dispatch_5_end2016-03-06 09:22:57.913 iOS 学习_dispatch_barrier[938:19679] dispatch_7_end
1 0
- iOS之GCD再谈(dispatch_barrier_async)
- GCD之五:dispatch_barrier_async
- GCD 之 dispatch_barrier_async
- iOS开发之GCD(7)API dispatch_barrier_async
- [IOS 开发] GCD学习 dispatch_barrier_async
- GCD-dispatch_barrier_async
- GCD学习之——dispatch_barrier_async
- GCD学习(五) dispatch_barrier_async
- GCD学习(五) dispatch_barrier_async
- GCD学习 dispatch_barrier_async
- GCD学习(五) dispatch_barrier_async
- GCD学习笔记(七):dispatch_barrier_async
- iOS 多线程: dispatch_barrier_async
- iOS dispatch_barrier_async 函数使用
- GCD入门介绍四---- dispatch_group_async和dispatch_barrier_async
- gcd多线程查看是否执行完毕dispatch_barrier_async
- dispatch_barrier_async
- dispatch_barrier_async
- HDU 3035 War 平面最小割+优先队列优化的dij
- Android OkHttp完全解析 是时候来了解OkHttp了
- Java小练习
- codeforcces 623A - Graph and String Note that 构造
- Qt的tr()函数
- iOS之GCD再谈(dispatch_barrier_async)
- 自动计算cell时候计算不准确
- 来看看国外父母是怎么教孩子独立的
- Centos7.2:搭建Ceph管理系统Inscope
- MATLAB cat函数
- Servlet技术学习(一)
- 消费者生产者
- Freemarker常用技巧
- colorAccent,colorPrimary,colorPrimaryDark……来这里你就明白了