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