我试图增加并发队列中执行的块的优先级。我建议标志enforceQoS适合此目的。正如苹果文档所说:
该标志将块的服务质量等级优先于与当前执行上下文关联的等级,只要这样做不会降低服务质量。
假设有一个队列:
/// Lowest priority queue
let concurrentQueue = DispatchQueue(label: "queue.conc.test", qos: .background, attributes: .concurrent)
我们还有几个DispatchWorkItem任务,其中一些是:
let item1 = DispatchWorkItem(qos: .userInitiated) { /* execute block */ }
let item2 = DispatchWorkItem(qos: .utility, flags: .enforceQoS) { /* execute block */ }
我的问题很简单:Apple 是否保证 item2 提前执行?
我在操场上玩了一会儿,可惜没有透露出这面旗帜的任何优势,结果绝对混乱。官方文档在这件事上也没有帮助。
非常感谢。