ios- 死锁
来源:互联网 发布:国学大师txt数据库 编辑:程序博客网 时间:2024/05/21 11:34
什么是死锁 ?
什么时候会发生死锁?
出现死锁我们怎么解决
死锁就是线程之间的相互等待
简单的来说 就是你等我 我等你 线程出现这种情况会导致死锁的放生
举个简单的例子 :
#import "GCDViewController.h"@interface GCDViewController (){ /** * 串行队列 */ dispatch_queue_t mainQueue; /** * 并行队列 * * @return <#return value description#> */ dispatch_queue_t globelQueue;}@end@implementation GCDViewController- (void)viewDidLoad { [super viewDidLoad]; /** * 同步调度:dispatch_sync(<#dispatch_queue_t queue#>, <#^(void)block#>) 把一个任务添加到某个queue 等这个任务执行完 调用线程才会执行 异步调度:dispatch_async(<#dispatch_queue_t queue#>, <#^(void)block#>) 把一个任务添加到某个队列立马离开 不管这个任务在这个队列的执行状态 * * */ NSLog(@"3333333333333333333"); dispatch_sync(dispatch_get_main_queue(), ^{ NSLog(@"111111111111111111"); }); NSLog(@"2222222222222222222"); // Do any additional setup after loading the view.}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}/*#pragma mark - Navigation// In a storyboard-based application, you will often want to do a little preparation before navigation- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // Get the new view controller using [segue destinationViewController]. // Pass the selected object to the new view controller.}*/@end
打印结果只有3333.。。
为什么?
dispatch_sync 这句话的作用是阻塞主线程的 我们有在主线程中派遣任务 主线程没办法执行 会发生相互等待 出现死锁
0 0
- iOS 死锁
- ios- 死锁
- iOS线程死锁分析
- ios多线程死锁解析
- 【iOS】GCD死锁
- ios 线程死锁
- IOS GCD 死锁总结
- Ios 死锁 GCD 多线程
- ios开发问题之死锁
- iOS - GCD 之线程死锁
- IOS开发中的死锁问题
- iOS 多线程编程 GCD 死锁
- IOS学习笔记之十二:Dispatch_sync死锁
- iOS 多线程+死锁(同步函数底层)
- 死锁
- 死锁
- 死锁
- 死锁
- 包含目录和附加包含目录
- fill_parent、wrap_content和match_parent的区别
- iOS 代码实践总结
- 高性能mysql(一)优化数据类型
- 小强的HTML5移动开发之路(17)——HTML5内联SVG
- ios- 死锁
- Android图片旋转
- 进入实战,开发酷欧天气(一)
- office2010 word 关闭很慢
- Win10家庭版升级至专业版
- HDU5361 In Touch
- .net 简单易懂的扩展方法教程
- phpcms v9 数据库操作函数
- 字符串进行运算