什么情况下会产生死锁:
使用sync
往当前串行队列
中添加任务,会卡主当前的串行队列,造成死锁
举例一:此情况会发生死锁,
1、这是创建了一个同步队列,同步队列的特点就是排队,FIFO,先进先出;
2、这是主线程的一个同步队列,遵循先进先出原则,viewDidLoad是先进的,所以应该要先执行完viewDidLoad才能执行48行;
3、但是这又是一个串行队列,要顺序执行,所以结果就是50行要等56行,56行要等50行;
4、这就造成了死锁。
举例二:
1、虽然同样是在主队列不会开启新线程,
2、但因为是异步执行,它会等别的任务执行完了再在开始执行“任务2”:
举例三:
注:这种情况下不会产生死锁.
因为:“任务3”和“任务2”不是在同一个队列里;