美文网首页
【iOS开发】iOS开发中的死锁

【iOS开发】iOS开发中的死锁

作者: xiacheng | 来源:发表于2017-02-10 10:28 被阅读69次

参考文章:
彻底搞懂OC中GCD导致死锁的原因和解决方案

以下面的例子来做说明:

NSLog(@"1"); // 任务1
dispatch_sync(dispatch_get_main_queue(), ^{
    NSLog(@"2"); // 任务2
});
NSLog(@"3"); // 任务3

当执行到dispatch_sync的时候,由于是同步执行,所以,当前线程即主线程会被阻塞,直到block里面的代码被执行完,但是block里面的代码被放到了主线程中来执行,即当前被阻塞的线程来执行,所以,任务2不可能被执行。程序也就没有办法再继续向下走。

我觉得这才是正确的解释,而不是这篇文章中的解释

首先执行任务1,这是肯定没问题的,只是接下来,程序遇到了同步线程,那么它会进入等待,等待任务2执行完,然后执行任务3。但这是队列,有任务来,当然会将任务加到队尾,然后遵循FIFO原则执行任务。那么,现在任务2就会被加到最后,任务3排在了任务2前面。

让我想了好久才想明白。

相关文章

  • 【iOS开发】iOS开发中的死锁

    参考文章:彻底搞懂OC中GCD导致死锁的原因和解决方案 以下面的例子来做说明: 当执行到dispatch_sync...

  • iOS-知识点

    五个案例让你明白GCD死锁:http://ios.jobbole.com/82622/ iOS开发中多线程间关于锁...

  • iOS 中 iBeacon 开发

    iOS 中 iBeacon 开发 iOS 中 iBeacon 开发

  • IOS开发 GCD产生死锁的总结

    在IOS开发中GCD的使用频率很高,但是使用不当,则会产生死锁,以下是我的对GCD产生死锁的总结。 了解死锁之前首...

  • iOS团队开发 git使用管理

    Git iOS 多人开发 git - xcode 团队开发 iOS开发中的Git流程(动态演示)

  • 01-iOS多线程 ——图解死锁

    死锁 - 死锁问题,是iOS开发中必须要理解的问题,可能光看一些讲解死锁的代码并不是很容易理解。我制作了下面这幅图...

  • iOS权限完整解决

    前言 iOS开发中,权限问题不可避免; 写了文章iOS开发中的这些权限,你搞懂了吗?和[续]iOS开发中的这些权限...

  • iOS开发中遇到过的坑

    iOS开发中遇到过的坑 iOS开发中遇到过的坑

  • iOS资源

    iOS开发200个tips总结(一) iOS开发200个tips总结(二) iOS中NSFileManager文件...

  • iOS开发优秀博客和软件推荐

    iOSBlogAndTools iOS开发优秀博客和软件推荐 iOS开发中文博客 iOS开发工具 iOS开发网站 ...

网友评论

      本文标题:【iOS开发】iOS开发中的死锁

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