ios swift 多线程(队列)
//这篇笔记是看了这篇文章后的总结


  • DispatchQueue创建队列

    DispatchQueue(
    label: String,
    qos: DispatchQoS,
    attributes: DispatchQueue.Attributes,
    autoreleaseFrequency: DispatchQueue.AutoreleaseFrequency,
    target: DispatchQueue?
    )

    其中参数lable 是必须并独一无二的

    你唯一要做的事就是为你的队列提供一个独一无二的标签(label)。使用一个反向的 DNS 符号(”com.appcoda.myqueue”)就很好,因为用它很容易创造一个独一无二的标签,甚至连苹果公司都是这样建议的。尽管如此,这并不是强制性的,你可以使用你喜欢的任何字符串,只要这个字符串是唯一的。除此之外,上面的构造方法并不是创建队列的唯一方式。在初始化队列的时候可以提供更多的参数,我们会在后面的篇幅中谈论到它。

    最简单的创建队列的方式就是

  • 启动队列:
    queue.async {} //异步。主队列与此队列同时运行
    queue.sync {} //同步。主队列会等待此队列运行结束再运行

  • 队列优先级(QoS)

    userInteractive
    userInitiated
    default
    utility
    background
    unspecified

    //Apple用户至上的体现
    这里是关于各个优先级的官方解释
    QoS直接放进创建队列时的qos参数中

    优先级的高低主要影响系统资源的分配//并不意味着低优先级必须等待高优先级运行结束才执行
    主队列拥有最高的优先级

  • 并行队列
    attributes参数
    创建并行队列

    attributes: .concurren参数
    attributes: .concurren参数
    未设置.concurren

    attributes: .initiallyInactive会在调用activate()方法时才启动队列

    也可以同时设置两个参数attributes: [.concurrent, .initiallyInactive]

  • 延迟执行

  • 全局队列/主队列
    全局队列是系统后台的队列

    主队列一般用作更新UI

  • 使用 DispatchWorkItem 对象

    notify会在workItem运行结束后运行//相当于最后一项工作

 


//课堂草稿⬇️