Vai*_*ngh 4 qos grand-central-dispatch swift
我找到了有关如何提升操作和操作队列的 QOS 的文档: https://developer.apple.com/library/archive/documentation/Performance/Conceptual/EnergyGuide-iOS/PrioritizeWorkWithQoS.html
但还没有找到任何关于dispatchQueues的信息。QOS 分配有以下三种方式:
到 DispatchQueue 本身
当我们将任务分派到dispatchQueue时: func async(group: DispatchGroup?, qos: DispatchQoS, flags : DispatchWorkItemFlags,execute: () -> Void)
我们可以为dispatchWorkItem本身分配一个QOS
我想知道当这些QOS不同时,QOS如何提升。
您\xe2\x80\x99 概述了指定服务质量 (QoS) 的三种方法。但后两者实际上是相同的,只是一个使用块,另一个使用块DispatchWorkItem。那么让\xe2\x80\x99s重点关注队列和调度任务这两个QoS维度。
简而言之,队列 QoS 优先于调度项\xe2\x80\x99s QoS,除非:
\n\n.unspecified);或者.enforceQoS(该标志优先考虑任务 \xe2\x80\x99s QoS 高于队列的 QoS,只要 \xe2\x80\x9c 这样做不会降低服务质量\xe2\x80\x9d)。坦白说,大多数时候,我们只是设置了队列 QoS 就到此为止了。它清晰、简洁,并且很容易推理我们的代码。可以在任务级别指定 QoS,但不太常见。为队列和分派项目指定 QoS 并使用标志覆盖 QoS.enforceQoS是非常不寻常的。
有关一般 QoS 的更多信息,请参阅 WWDC 2015使用 GCD 构建响应式且高效的应用程序和 WWDC 2016在 Swift 3 中使用 GCD 进行并发编程。第一个视频向我们介绍了 QoS(正如您所看到的,当他们介绍这个主题时,重点是调度队列),但该视频无可否认地使用了旧的 Swift 2 语法,尽管概念没有改变。第二个视频向我们介绍了当代 Swift 语法,并简要回顾了前一个视频的许多讨论。
\n\n有各种有趣的(和不寻常的)边缘情况(例如 GCD\xe2\x80\x99s 处理优先级反转),但是 \xe2\x80\x99s 在上面的视频中讨论,超出了这个问题的范围。
\n| 归档时间: |
|
| 查看次数: |
1420 次 |
| 最近记录: |