死锁的原因:
- 串行队列的当前线程添加同步任务会发生 死锁
- 主队列也是串行队列
- 向串行队列添加同步任务发生 死锁
同步执行和异步执行的区别
- 1、同步执行函数,立即执行,不开启线程在当前线程执行 阻塞当前线程
- 2、异步函数,保存当前的需要执行的任务,有线程相关的操作,不阻塞当前线程
并发队列:
并发队列:同步嵌入异步,,同步的有顺序 异步的无法确定
打印结果:24 5 3 2和4顺序是定的 并发队列:异步嵌套同步,同步立即执行
打印结果: 234 5是不确定的
并发队列:同步嵌同步
打印:2345 并发队列:异步嵌异步
打印:5 24 3 其中5的位置不定 3也不定 只 24定 (24 和3在不同的线程)
串行队列:
-
串行:异步 + 同步 死锁,
-
串行:异步 + 异步 按添加队列的顺序执行
-
串行:同步 + 同步 死锁
-
串行:同步 + 异步 先同步 走完再异步,按照加入队列的顺序
全局并发队列:
打印结果:>= 100 原因:while循环会卡住代码直到 >100
打印结果:< 100 原因:for 循环会卡不住代码 有可能打出 0