博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GCD之死锁
阅读量:6446 次
发布时间:2019-06-23

本文共 1144 字,大约阅读时间需要 3 分钟。

GCD相当好用,但用不好就会死锁,始终要记着这样一句秘籍:

不要在串行队列放dispatch_sync、dispatch_apply

下面看几个例子

// 防死锁秘籍:不要在串行队列放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");        });    });

转载地址:http://wktwo.baihongyu.com/

你可能感兴趣的文章
前端实现html转pdf方法总结
查看>>
python综合学习三之Numpy和Pandas
查看>>
ECMAScript6(12):Proxy 和 Reflect
查看>>
koa-router源码学习
查看>>
egg学习笔记(6)--egg+mysql(sequelize)+vue实现curd
查看>>
Laravel源码解析之路由的使用
查看>>
实战Vue简易项目(4)定义视图
查看>>
MongoDB4.0 在windows中安装与配置
查看>>
如何正确的提问题
查看>>
关于 phantomJS 请求url driver.current_url 为 about:blank
查看>>
人工智能发展速度超过多数人想象
查看>>
将Java应用部署到SAP云平台neo环境的两种方式
查看>>
204. Count Primes
查看>>
响应式布局的常用解决方案对比(媒体查询、百分比、rem和vw/vh)
查看>>
前端每日实战:46# 视频演示如何用纯 CSS 创作一个在容器中反弹的小球
查看>>
Objective-C语法总结
查看>>
工程篇前传
查看>>
使用Network Recycle Bin启用映射网络驱动器上的回收站
查看>>
javascript实现数据结构中的栈结构
查看>>
使用travis进行持续集成golang项目
查看>>