dispatch_sync引起死锁的情况和原因
2016-05-25 00:00
274 查看
dispatch_async(queue, blk)
blk会被放入线程队列的尾部等待执行,函数立刻返回,不会阻塞当前的线程
dispatch_sync(queue, blk)
blk也会放入线程队列的尾部等待执行,
这里有2种情况:
1. 执行dispatch_sync的线程和blk放入的线程是同一个线程时,当前线程已被阻塞了,无法执行插入队列尾部的blk,造成死锁;
2. 执行dispatch_sync的线程和blk放入的线程不是同一线程时,会阻塞当前执行线程,直到在另个线程中执行blk完成,该函数返回,当前线程继续运行,不会造成死锁。
blk会被放入线程队列的尾部等待执行,函数立刻返回,不会阻塞当前的线程
dispatch_sync(queue, blk)
blk也会放入线程队列的尾部等待执行,
这里有2种情况:
1. 执行dispatch_sync的线程和blk放入的线程是同一个线程时,当前线程已被阻塞了,无法执行插入队列尾部的blk,造成死锁;
2. 执行dispatch_sync的线程和blk放入的线程不是同一线程时,会阻塞当前执行线程,直到在另个线程中执行blk完成,该函数返回,当前线程继续运行,不会造成死锁。
相关文章推荐
- Category 中属性的使用
- 时间轴+时间管理思维导图模板
- 搜索技巧+碳族元素思维导图模板
- Eclipse创建Maven Web项目
- Mybatis中模糊查询的各种写法
- 基于Spring可扩展Schema提供自定义配置支持(spring配置文件中 配置标签支持)
- Java transient关键字
- 管理Spring容器中的自定义Bean
- MySQL并发引起的死锁案例分析
- 新EventHandler
- HDU 3652 记忆化搜索加 多维数位dp 模板
- Time wait bucket overflow
- 不盲目选择定购直播系统,不要单看价格——云豹直播分析
- 市场力不从心,只剩死多头的口号
- 菜鸟的B4A(B4X)开发成长日志第三天
- 单例模式与开发实践
- 如何成为一名优秀的程序员
- Objective-C ---NSFileManager NSFileHandle (梳理整理)
- 跟我学《JavaScript高程3》,开讲啦……
- Sturts所遇问题