Swift中队列的创建
public convenience init(label: String, qos: DispatchQoS = .unspecified, attributes: DispatchQueue.Attributes = [], autoreleaseFrequency: DispatchQueue.AutoreleaseFrequency = .inherit, target: DispatchQueue? = nil)
-
label:String : 队列的标识符,方便在调试工具(如 Instruments, 奔溃日志)中找到对应的信息。
-
qos: DispatchQoS : 该值确定系统安排任务执行的优先级。QoS类对要在DispatchQueue上执行的工作进行了分类。 通过指定任务的qos,可以表明任务对应用程序的重要性。 在安排任务时,系统会优先处理服务级别较高的任务。因为高优先级的工作比低优先级的工作执行得更快,资源更多,所以与低优先级的工作相比,通常需要更多的精力。 为您的应用执行的工作准确地指定适当的QoS类可确保您的应用具有响应能力和能源效率。
- public static let background: DispatchQoS 在所有任务中具有最低的优先级。针对当APP在后台运行的时候,需要处理的任务
- public static let utility: DispatchQoS 优先级低于default, userInitiated, userInteractive,高于background。 将类型分配给不会阻止用户继续使用您的应用程序的任务。 例如,您可以将此类分配给长时间运行的任务,而这些任务的进度用户并未积极关注。
- public static let
default
: DispatchQoS 优先级低于 userInitiated, userInteractive,但高于utility和background。将此类型分配给应用启动或代表用户执行活动的任务或队列。 - public static let userInitiated: DispatchQoS 优先级仅仅低于 userInteractive。 将此类型分配给可以为用户的操作提供即时结果的任务,或者将阻止用户使用您的应用的任务。 例如,您可以使用此类型加载要显示给用户的电子邮件的内容。
- public static let userInteractive: DispatchQoS 在所有任务中具有最高的优先级。将此类型分配给可与用户交互或主动更新应用程序的用户界面的任务或队列。 例如,将此用于动画类或跟踪事件。
- public static let unspecified: DispatchQoS 未设置优先级
在OC中的定义
typedef uint32_t dispatch_qos_t; typedef uint32_t dispatch_priority_t; #define DISPATCH_QOS_UNSPECIFIED ((dispatch_qos_t)0) #define DISPATCH_QOS_MAINTENANCE ((dispatch_qos_t)1) #define DISPATCH_QOS_BACKGROUND ((dispatch_qos_t)2) #define DI