设置服务质量对串行 DispatchQueue 有什么影响吗?

Does setting a quality of service have any effect on a serial DispatchQueue?

可以创建具有服务质量设置的串行 DispatchQueue:

let myQueue = DispatchQueue(label: "my-cool-queue",
                            qos: .utility)

但是,我能找到的所有文档都只在选择全局调度队列之一的上下文中提到了 QoS。 (不幸的是,DispatchQueue 初始值设定项 not documented at all 超出了它存在的事实!)在串行队列上指定服务质量是否有意义,或者每个这样的队列是否只尽快执行每个任务尽可能在上一个任务完成后?

QoS 独立于队列类型,串行或并发:

GCD 使用调度队列的 QoS 来确定支持 posix 线程的优先级,最终 运行 排队的工作项目。

并发模型用于确定作业是否可以 运行 彼此独立。它没有给出任何关于 "attention" 支持线程从 OS 调度程序获得多少的提示。

所以回答你的结束问题:串行队列一个接一个地执行工作项,速度与 QoS 允许的一样快。

当您的(串行)队列以另一个队列为目标时,它肯定会起作用。观看此演讲:

https://developer.apple.com/videos/play/wwdc2017/706/

在20:46左右,他正在谈论形成DispatchQueues树。在这种情况下,QoS 很重要。