Swift中的DispatchQueue.global qos参数解析

4 min read

Swift中的DispatchQueue提供了global()方法来创建全局队列。如果我们在使用这个方法时要求一个优先级队列,就可以传递一个Quality of Service(QoS)参数。

QoS参数用于在系统中指定任务的优先级。有四种可用的QoS参数,分别是:

  • userInteractive: 用于响应与用户交互的任务(例如,操作用户界面或播放音频)
  • userInitiated: 用于由用户发起的任务,但是不是直接调用的。(例如,加载一个文档)
  • utility: 用于不需要即时完成的任务,例如数据预加载或散列表维护。这个QoS级别可以节省电量,但是可能会有更长的延迟。
  • background: 用于后台任务,例如同步或备份数据。这个QoS级别通常可以产生更长的延迟,但是不会占用太多的资源。

当使用全局队列时,我们可以使用以下方法指定QoS参数:

let queue = DispatchQueue.global(qos: .userInteractive)

在这个例子中,我们使用了userInteractive QoS参数来创建了一个队列。这个队列将优先处理与用户交互相关的任务。注意,在没有指定QoS参数的情况下,全局队列默认使用QoS.utility级别。