线程的坑
来源:互联网 发布:淘宝在支付宝找回密码 编辑:程序博客网 时间:2024/05/12 21:03
因为dispatch_sync函数是同步的。所以这只有执行完这个同步才会继续往下执行,但是我们在dispatch_sync中调用了dispatch_get_main_queue,所以在主线程中调用的情况下就会出现死锁。因此只能输出1.
222222222222222222
代码:(串行队列里同步线程嵌套)
NSLog(@"haha");
dispatch_queue_t queue = dispatch_queue_create("test", nil);
dispatch_sync(queue, ^ {
NSLog(@"xxoo0");
dispatch_sync(queue, ^ {
NSLog(@"xxoo1");
});
NSLog(@"xxoo2");
});
运行结果:2014-08-25 14:30:24.440 test[4424:60b] haha
2014-08-25 14:30:24.441 test[4424:60b] xxoo0
在test串行队列中,有两个同步线程嵌套导致第二个同步线程运行不了,产生了死锁。
原因是:在串行队列中,第二个同步线程要执行,必须等待第一个同步线程执行完成后才可进行,但是第一个同步线程要执行完又得等待第二个同步线程执行完,因为第二个同步线程嵌套在第一个同步线程里,这就造成了两个同步线程互相等待,即死锁。
特别强调:是在串行队列里!
0 0
- 线程的坑
- 线程池的坑
- 线程--线程的生命周期
- 线程的
- 线程的
- Java线程:线程的调度-守护线程
- Java线程:线程的调度-守护线程
- Java线程:线程的调度-守护线程
- Java线程:线程的调度-守护线程
- Java线程:线程的调度-守护线程
- Java线程:线程的调度-守护线程
- 线程、线程句柄、线程ID的关系
- 线程、线程句柄、线程ID的关系
- Java线程:线程的调度-守护线程
- Java线程:线程的调度-守护线程
- Java线程:线程的调度-守护线程
- Java线程:线程的调度-守护线程
- Java线程:线程的调度-守护线程
- VMware View 5.0从菜鸟到高手系列 6 -创建虚拟桌面池篇
- ANT教程之九 Ant创建JAR文件
- 深入了解epoll (转)
- 2015-11-7
- 【悟】两场雪
- 线程的坑
- VMware View 5.0从菜鸟到高手系列 7 -分配虚拟桌面篇
- ANT教程之十 Ant创建WAR文件
- iOS开发系列之Objective-C基础:KVO(键值观察机制)
- 20151106 向死而生倒计时
- VMware View 5.0从菜鸟到高手系列 8 -连接虚拟桌面篇
- Jquery dataTable colspan问题
- PowerShell介绍 第九回 哈希表
- 一篇DirectX 透明窗口的实现的文章