- (void)viewDidLoad
{
[super viewDidLoad]; dispatch_sync(dispatch_get_main_queue(), ^{NSLog(@"");}); NSLog(@"");
}
此时主线程已是死锁状态,不会打印222和111。主线程执行到dispatch_sync时,它会阻塞主线程, 直到主队列完成dispatch_sync中的任务(即是这里的NSLog(@"111")), 但主队列要完成dispatch_sync中的任务,就要先完成之前的任务(即viewDidLoad中的所有代码需先执行完才能执行dispatch_sync中的代码,因为队列是FIFO(先入先出),而viewDidLoad是比dispatch_sync中的任务先入主队列的),因此导致了死锁的情况。这里可以改用dispatch_async就能解决问题。

但即使使用dispatch_async实现并行队列(异步执行),队列也是按照FIFO顺序执行,仍需等待。除非新建另一个队列执行任务。

最新文章

  1. rightTeam SCRUM第一个冲刺周期
  2. Unity 2D Touch Movement
  3. faker image
  4. 【转发】Linux下如何查看当前支持的文件系统及各分区的文件系统类型
  5. Intellij编译时报“java: System Java Compiler was not found in classpath”
  6. YII中的AR与DAO
  7. docker学习笔记(1)
  8. IOS 表视图(UITableVIew)的使用方法(6)表视图的编辑功能(新增Add)
  9. (转)POPTEST联合创始人李爱然的“IT培训创业的随想"
  10. mpls vpn剩余笔记
  11. 自己手写WEB程序框架并执行
  12. Android官方技术文档翻译——新构建系统概述
  13. VS编译代码未通过,常见问题。
  14. 2018-2019-2 20165215《网络对抗技术》Exp4 恶意代码分析
  15. 回溯法 17. Letter Combinations of a Phone Number
  16. 对象Object
  17. 安卓开发_浅谈ListView(自定义适配器)
  18. Android - Resource 之 Menu 小结
  19. 一个十年IT从业者的职场感言:为什么不要自称是“程序员”
  20. bootstrap datepicker Uncaught TypeError: Cannot call method 'split' of undefined问题

热门文章

  1. iOS判断并使用百度地图 高德地图 导航 (使用URI,不集成sdk)
  2. list去重 转载
  3. LNMP卸载
  4. js对JSON数据排序
  5. sqlserver 分页sql语句
  6. vb listview 的常用操作
  7. opengl笔记
  8. J2SE知识点摘记(二十一)
  9. Sql Server数据库快照初探
  10. HTTP协议漫谈