【不要】在某个串行队列(serialQueue)中的某个任务里面,往同一个队列(自己)中去同步(sync)执行任务!
- PS:主队列(mainQueue)也属于串行队列,死锁会导致界面直接卡死。
死锁
造成死锁的原因:
- dispatch_sync(同步执行):立马在当前线程同步执行任务,执行完毕才能继续往下执行
- serial dispatch queue(串行队列):必须等上一个任务执行完毕后才去执行下一个任务
1+2的后果:串行队列同步添加任务1,会在当前线程内去执行任务1,途中同步添加任务2, 这时由于【同步执行】的性质,任务1必须要等任务2执行完才能继续,而任务2由于【串行队列】的性质,也必须等任务1执行完才会执行,这样等来等去等到宇宙爆炸都等不到,由此造成死锁。









网友评论