ios - 主队列异步与默认队列异步说明

标签 ios xcode concurrency grand-central-dispatch

我刚刚看了这个raywenderlich.com video并采取了this screenshot有问题的代码 (@ 22:30)。

我想知道 mainQueue.async 是如何在 defaultQueue.async 之后完成的,尽管它被放在我认为是更高优先级的队列(默认为 userInteractiveuserInitiated,但不管高于 default,对吧?)。我观看了整个视频,感觉在看到之前我对所有内容都有很好的把握。有人可以解释一下吗?非常感谢。

最佳答案

屏幕截图中没有足够的代码来真正了解发生了什么,但我认为问题是这样的:

主队列比较特殊;与所有其他调度队列不同,添加到主队列的 block 由应用程序的主运行循环调度。所有其他调度队列在任何可用线程上执行 block 。

因此,虽然您在后台排队运行的 block 几乎会立即启动,但您在主线程上排队运行的任何内容都必须等到主运行循环循环,并且必须与计时器、用户输入事件一起等待,等等。

关于ios - 主队列异步与默认队列异步说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56249546/

相关文章:

objective-c - 如何在两个iOS设备之间实现语音和文本聊天

ios - iOS 应用程序崩溃时的内存转储

ios - Kotlin 多平台 - 错误 ITMS-90171 : Invalid Bundle Structure

iphone - iAd AdBanner 内存泄漏问题(应用程序崩溃)

Java 并发 : Paired locks with shared access

c# - 如何使用 Monotouch for iPad 创建圆形按钮?

c++ - 将 2 位整数分配给 char 变量

iOS SKMaps 不加载注释(Xcode 6,Objective C)

python - 无法让多处理同时运行进程

scala - Specs2 - 不应在并发环境中使用单位规范样式