iOS GCD:任何全局队列与具有后台优先级的队列之间的差异(DISPATCH_QUEUE_PRIORITY_BACKGROUND)?

iOS GCD:任何全局队列与具有后台优先级的队列之间的差异(DISPATCH_QUEUE_PRIORITY_BACKGROUND)?,第1张

概述我读 Concurrency Programming Guide和事情困惑我。 我看到很多代码调用以下任何后台任务: dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 现在我的“背景”的意思是流行的意思: 在主(UI)线程之外的任何地方执行的东西 所以遵循文档,上面的语句返回任何具有不同优先级的非主线程队列。 我的问题是 我读 Concurrency Programming Guide和事情困惑我。

我看到很多代码调用以下任何后台任务:

dispatch_get_global_queue(disPATCH_QUEUE_PRIORITY_DEFAulT,0);

现在我的“背景”的意思是流行的意思:

在主(UI)线程之外的任何地方执行的东西

所以遵循文档,上面的语句返回任何具有不同优先级的非主线程队列。

我的问题是 – 为什么disPATCH_QUEUE_PRIORITY_BACKGROUND存在?
最近我还看到许多异步任务使用disPATCH_QUEUE_PRIORITY_BACKGROUND特定来执行后台任务。

不是使用disPATCH_QUEUE_PRIORITY_DEFAulT,disPATCH_QUEUE_PRIORITY_LOW或disPATCH_QUEUE_PRIORITY_HIGH返回的队列远离主线程运行,如果它们使用dispatch_get_global_queue返回?

他们不是背景队列吗? disPATCH_QUEUE_PRIORITY_BACKGROUND返回的队列的具体用途是什么?我已经referred to this,但它没有澄清很多,除了我上面提到的流行的意思。

我相信我很混乱的话 – 背景和背景队列。如果有人可以解释(更好,图形) – 将是一个很大的帮助。

解决方法 如果您有许多后台任务,则设备的cpu或cpu将在所有cpu之间共享。大多数时候是正确的事情。如果任务完成时间过长,您可以通过尝试提高效率来解决问题。

在极少数情况下,你可能有一个任务需要很长时间,但它是好的等待它。所以你给它背景的优先。如果在norMAL优先级上有任何工作要做,那么该工作将首先完成,并且仅当有备用cpu不做任何其他事情时,将执行BACKGROUND任务。并且有高优先级的队列;该队列中的任务将首先执行;如果一个特定任务需要尽快完成,即使这意味着其他任务被延迟,也可以这样做。

从编程逻辑的角度来看,所有三个队列是相同的。它只是影响 *** 作系统尝试首先完成哪些任务,它不关心那么多。

总结

以上是内存溢出为你收集整理的iOS GCD:任何全局队列与具有后台优先级的队列之间的差异(DISPATCH_QUEUE_PRIORITY_BACKGROUND)?全部内容,希望文章能够帮你解决iOS GCD:任何全局队列与具有后台优先级的队列之间的差异(DISPATCH_QUEUE_PRIORITY_BACKGROUND)?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1042666.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-24
下一篇2022-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存