您的位置:首页 > 其它

dispatch_sync引起死锁的情况和原因

2016-05-25 00:00 274 查看
dispatch_async(queue, blk)

blk会被放入线程队列的尾部等待执行,函数立刻返回,不会阻塞当前的线程

dispatch_sync(queue, blk)

blk也会放入线程队列的尾部等待执行,

这里有2种情况:

1. 执行dispatch_sync的线程和blk放入的线程是同一个线程时,当前线程已被阻塞了,无法执行插入队列尾部的blk,造成死锁;

2. 执行dispatch_sync的线程和blk放入的线程不是同一线程时,会阻塞当前执行线程,直到在另个线程中执行blk完成,该函数返回,当前线程继续运行,不会造成死锁。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: