美文网首页
GCD死锁的注意点

GCD死锁的注意点

作者: 健了个平_24 | 来源:发表于2020-02-04 16:13 被阅读0次

    【不要】在某个串行队列(serialQueue)中的某个任务里面,往同一个队列(自己)中去同步(sync)执行任务!

    • PS:主队列(mainQueue)也属于串行队列,死锁会导致界面直接卡死。
    死锁

    造成死锁的原因:

    1. dispatch_sync(同步执行):立马在当前线程同步执行任务,执行完毕才能继续往下执行
    2. serial dispatch queue(串行队列):必须等上一个任务执行完毕后才去执行下一个任务

    1+2的后果:串行队列同步添加任务1,会在当前线程内去执行任务1,途中同步添加任务2, 这时由于【同步执行】的性质,任务1必须要等任务2执行完才能继续,而任务2由于【串行队列】的性质,也必须任务1执行完才会执行,这样等来等去等到宇宙爆炸都等不到,由此造成死锁。

    相关文章

      网友评论

          本文标题:GCD死锁的注意点

          本文链接:https://www.haomeiwen.com/subject/rrnrxhtx.html