GCD问题

作者: FRAJ | 来源:发表于2019-05-21 15:56 被阅读0次
NSLog(@"1"); //任务一
dispatch_sync(dispatch_get_main_queue(),^{
  NSLog(@"2"); //任务二
}
NSLog(@"3"); //任务三

输出结果:1

分析:
首先任务一,这是肯定没问题的,只是接下来,程序遇到同步线程,那么它会进入等待,等待任务二执行完,然后执行任务三。但这是队列,有任务来,当然会将任务加到队尾,然后遵循FIFO原则执行任务。那么,现在任务二就会被追加到最后,任务三排在了任务二前面,问题来了,任务三要等任务二执行完才能执行,任务二又排到任务三后面,意味着任务二要在任务三执行完才能执行,所以他们进入了相互等待的局面。[既然这样,那就干脆就卡在这里吧],这就是死锁。

相关文章

  • GCD问题

    输出结果:1 分析:首先任务一,这是肯定没问题的,只是接下来,程序遇到同步线程,那么它会进入等待,等待任务二执行完...

  • [iOS面试]第6章 多线程相关面试问题

    本文主讲多线程相关面试问题:包括GCD、NSOperation、NSThread、多线程与锁。 一、GCD 同步/...

  • iOS App 使用 GCD 导致的卡顿问题

    iOS App 使用 GCD 导致的卡顿问题

  • GCD 常见面试点

    在最近的 iOS 面试过程中,GCD 是属于必问的问题,接触过不少 GCD 相关的面试题,有关 GCD 的面试点大...

  • 多线程之GCD

    线程、多线程 多线程存在的问题 为什么使用多线程? GCD GCD 的 API 介绍Dispatch QueueD...

  • 2021--- GCD

    gcd同步,异步,串行队列,并发队列,全局队列,主队列,以及死锁。 1、gcd队列阻塞问题[https://www...

  • 《Effective Objective-C 2.0》 阅读笔记

    43. 掌握GCD及队列的使用时机 解决多线程与任务管理问题,除了GCD,还有NSOperationQueue 技...

  • iOS多线程GCD

    在用GCD之前先来关注三个问题,用什么函数执行?执行什么任务?在什么队列里面执行?以上三个问题可以看做是组成GCD...

  • 多线程之GCD

    GCD介绍 1、GCD简介 2、GCD任务和队列 3、GCD 的基本使用 4、GCD 线程间的通信 5、GCD 的...

  • 【iOS】 GCD-资源竞争和死锁篇

    GCD-基础篇提出了三个问题,这里我们就这三个问题,在基于GCD-基础篇知识之上给出几种解决方案,仅供参考学习。 ...

网友评论

      本文标题:GCD问题

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