Dispatch Queue 中的 Dispatch Queue Priority 和 QoS 有啥区别?

Posted

技术标签:

【中文标题】Dispatch Queue 中的 Dispatch Queue Priority 和 QoS 有啥区别?【英文标题】:What is difference between Dispatch Queue Priority and QoS in Dispatch Queue?Dispatch Queue 中的 Dispatch Queue Priority 和 QoS 有什么区别? 【发布时间】:2018-07-30 09:56:07 【问题描述】:

DISPATCH_QUEUE_PRIORITY_HIGH 和用户交互的调度队列中的 QoS 有什么区别吗?

【问题讨论】:

【参考方案1】:

Apple 已从 ios 8.0 弃用调度队列优先级,而不是我们可以使用服务质量。

所以基本上 QOS 和优先级做同样的事情。

【讨论】:

【参考方案2】:

来自Apple documentation:

分派到队列的项目以高优先级运行;该队列被安排在任何默认优先级或低优先级队列之前执行。

此常量映射到 QOS_CLASS_USER_INITIATED 类。

所以,它们并不完全等价。

【讨论】:

嗨 Cristik,何时给予优先级或 QoS 以分配队列? @nettekar 文档应该给你最好的答案。如果您在文档中找不到它,您可以在 SO 上提出另一个问题。 如果我将背景作为 QoS 给予高优先级会发生什么?

以上是关于Dispatch Queue 中的 Dispatch Queue Priority 和 QoS 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3 中的 DISPATCH_QUEUE_T [重复]

CocoaPods 库中的强 dispatch_queue_t

GCD中的dispatch_get_global_queue(long identifier, unsigned long flags)

带有 NSAutoreleasePool 的嵌套 dispatch_async 中的 EXC_BAD_ACCESS

如何使用 DISPATCH_QUEUE_CONCURRENT 和屏障块复制 FIFO 队列?

多线程