GCD之死锁
来源:互联网 发布:怎么电话联系淘宝卖家 编辑:程序博客网 时间:2024/05/11 04:55
GCD相当好用,但用不好就会死锁,始终要记着这样一句秘籍:
不要在串行队列放dispatch_sync、dispatch_apply
下面看几个例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// 防死锁秘籍:不要在串行队列放dispatch_sync、dispatch_apply
// 死锁 主线程调用dispatch_apply
dispatch_async(dispatch_get_main_queue(), ^{
dispatch_apply(5, dispatch_get_main_queue(), ^(size_t i) {
NSLog
(@
"%ld"
,i);
NSLog
(@
"%d"
,55);
});
});
NSLog
(@
"%d"
,999);
//死锁 主线程调用dispatch_apply
dispatch_apply(5, dispatch_get_main_queue(), ^(size_t i) {
NSLog
(@
"%ld"
,i);
NSLog
(@
"%d"
,777);
});
//不死锁
dispatch_queue_t queue= dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_apply(5, queue, ^(size_t i) {
NSLog
(@
"%ld"
,i);
NSLog
(@
"%d"
,66);
});
NSLog
(@
"%d"
,88);
//不死锁
dispatch_async(queue, ^{
dispatch_apply(5, dispatch_get_main_queue(), ^(size_t i) {
NSLog
(@
"%ld"
,i);
});
});
// //不死锁
dispatch_async(queue,^{
dispatch_sync(dispatch_get_main_queue(), ^{
NSLog
(@
"test"
);
});
});
//死锁
dispatch_sync(queue,^{
dispatch_sync(dispatch_get_main_queue(), ^{
NSLog
(@
"test"
);
});
});
0 0
- GCD 之线程死锁
- GCD 之线程死锁
- GCD 之线程死锁
- GCD 之线程死锁
- GCD之死锁体会
- GCD之死锁
- GCD 之线程死锁
- GCD 之线程死锁问题
- iOS - GCD 之线程死锁
- GCD死锁
- GCD死锁
- GCD死锁
- GCD死锁
- GCD 死锁
- GCD之阻塞死锁问题以及多个图片下载优化
- GCD产生死锁
- GCD的死锁
- 【iOS】GCD死锁
- 51nod 1284 2 3 5 7的倍数(容斥)
- Zookeper中java代码中的API
- GCD之Apply
- 2017-04月份总结
- IntelliJ IDEA下使用默认Spring MVC框架运行失败的解决方案
- GCD之死锁
- 第四十三讲项目一 由键盘到文件
- 迁移学习&自我学习
- hdu1016
- java环境变量设置
- 51nod 1091 线段的重叠(贪心)
- NYOJ 有趣的数
- 牛客网 买帽子
- GCD之全局、主线程