赞
踩
//获取主队列
let mainQueue = DispatchQueue.main
let queue = DispatchQueue(label: "com.syc.nd")
//获取全局并发队列
let globleQueue = DispatchQueue.global()
//第二种
let queue = DispatchQueue(label: "com.xxx.xxx.queueName", attributes: .concurrent)
let concurrentQueue = DispatchQueue.init(label: "concurrentQueue", qos: DispatchQoS.default, attributes: [.concurrent, .initiallyInactive], autoreleaseFrequency: DispatchQueue.AutoreleaseFrequency.never, target: DispatchQueue?.none)
convenience init(label: String, qos: DispatchQoS = .unspecified, attributes: DispatchQueue.Attributes = [], autoreleaseFrequency: DispatchQueue.AutoreleaseFrequency = .inherit, target: DispatchQueue? = nil)
label: 队列名称id
qos:(服务质量等级)队列的优先级,如果没有指定值,会使用默认的属性 unspecified (不指定优先级)
public static let userInteractive: DispatchQoS 用户交互 public static let userInitiated: DispatchQoS 用户发起 public static let
default: DispatchQoS 默认优先级 public static let utility: DispatchQoS 对应oc中的low 低 public static let background: DispatchQoS 后台 public static let unspecified: DispatchQoS 不指定优先级
attributes: 选项集合 包含两个选项
**autoreleaseFrequency:**类型为枚举类型 用来设置管理任务内对象生命周期的 autorelease pool 的自动释放频率 包含三个类型:
target: 这个参数设置了队列的目标队列,即队列中的任务运行时实际所在的队列。目标队列最终约束了队列的优先级等属性。
在程序中手动创建的队列最后都指向了系统自带的主队类或全局并发队列
那为什么不直接将任务添加到系统队列中,而是自定义队列呢?这样的好处是可以将任务分组管理。如单独阻塞某个队列中的任务,而不是阻塞系统队列中的全部任务。如果阻塞了系统队列,所有指向它的原队列也就被阻塞。
func simpleSQueue() -> Void {
let queue = DispatchQueue(label: "com.syc.nd")
//同步执行队列
queue.sync {
for i in 1...3 {
print("同步执行队列---声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/691518
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。