gcd学习理解(二)
来源:互联网 发布:工作淘宝客服怎么样 编辑:程序博客网 时间:2024/06/05 03:47
1.更新UI或者发送通知等操作注意回到主线程来执行。主队列只会在主线程中执行main_queue
2.dispatch_after函数最好在主队列执行
3.dispatch_once_t 类 和dispatch_once函数对单利创建提供了一个便捷的方式,dispatch_once() 以线程安全的方式执行且仅执行其代码块一次
- dispatch_barrier_async(self.concurrentPhotoQueue, ^{
- [_photosArray addObject:photo];
- dispatch_async(dispatch_get_main_queue(), ^{
- [self postContentAddedNotification]; //改变数组信息
- - (NSArray *)photos
- {
- __block NSArray *array;
- dispatch_sync(self.concurrentPhotoQueue, ^{
- array = [NSArray arrayWithArray:_photosArray];
- });
- return array;
-(void)viewDidLoad{
NSLog(@"hello");
dispatch_queue_t mainQueue=dispatch_queue_create("wxy",DISPATCH_QUEUE_SERIAL);
dispatch_sync(mainQueue, ^{
NSLog(@"dddd");
});
NSLog(@"你好");
NSLog(@"%@",mainQueue);
NSLog(@"%@",dispatch_get_main_queue());
}//@1.先执行主队列的 NSLog(@"hello");
@2.执行“wxy”队列 NSLog(@"dddd");
@3.在执行主队列NSLog(@"你好");
如果你调用 dispatch_sync 并放在你已运行着的当前队列。这会导致死锁
-(void)viewDidLoad{
NSLog(@"hello");
dispatch_queue_t mainQueue=dispatch_get_main_queue();
dispatch_sync(mainQueue, ^{
NSLog(@"dddd");
});
NSLog(@"你好");
}
// NSLog(@"你好");是先于添加的任务,是没法完成的,要等到添加到dispatch_sync中的block先完成,但是这个block也没法完成,所以导致了死锁、
-(void)viewDidLoad{
NSLog(@"hello");
dispatch_queue_t mainQueue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH,0);
dispatch_async(mainQueue, ^{
NSLog(@"1");
});
dispatch_sync(mainQueue, ^{
sleep(1.0);
NSLog(@"2");
});
dispatch_async(mainQueue, ^{
NSLog(@"3");
});
dispatch_sync(mainQueue, ^{
NSLog(@"4");
});
NSLog(@"你好");
//mainqueue是一个全局队列,全局队列处理 dispatch_sync Block加入之前已经出现在队列中的任务,全局队列有并发处理的能力,如果碰到的是同步函数,则还是等待返回值后才能执行后面的,即使是在不同的队列中,不过如果把 dispatch_sync Block添加到当前运行的队列中,就会死锁!
//就是把同步函数任务或者异步函数任务添加到一个队列中,会有不同的执行顺序。
}
- gcd学习理解(二)
- GCD 深入理解二
- GCD理解(二)
- gcd理解学习
- GCD 深入理解(二)
- GCD 深入理解(二)
- GCD 深入理解(二)
- GCD 深入理解(二)
- GCD 深入理解(二)
- GCD 深入理解(二)
- GCD深入理解(二)
- GCD 深入理解(二)
- GCD 深入理解(二)
- GCD 深入理解(二)
- GCD 深入理解(二)
- GCD 深入理解(二)
- GCD深入理解(二)
- GCD 深入理解(二)
- Java对象的序列化和反序列化 克隆
- Java中接口里定义的成员变量
- 深度学习基础(十一)—— 稀疏自编码器(二)
- java中static小知识点记录
- 【代码笔记】iOS-平面化的饼图
- gcd学习理解(二)
- Oracle 11g笔记——临时表
- Android 历代SDK昵称和特点
- Oracle 11g笔记——分区表
- HYSBZ 3676 回文串 (回文树)
- 深度学习-OCR-数据库
- sort排序
- 奋斗吧,程序员——第三十三章 今朝此为别,何处还相遇
- Oracle 11g笔记——聚簇