美文网首页
DispatchQueue

DispatchQueue

作者: 曹来东 | 来源:发表于2019-08-12 16:38 被阅读0次
  • DispatchQueue 分为串行和并发,它的完整初始化方法为:
    DispatchQueue.init(label: String, qos: DispatchQoS, attributes: DispatchQueue.Attributes, autoreleaseFrequency: DispatchQueue.AutoreleaseFrequency, target: DispatchQueue?)
    可见,这些参数中,除了label,其它都有默认值(label表示该队列的标签,建议传值为反向域名字符串,如:com.onevcat.Kingfisher.Animator.preloadQueue)。
    当除label外的参数都使用默认值时,初始化方法返回的便是串行队列。如果需要返回并发队列,参数attributes传值为.concurrent即可。DispatchQueue.Attributes 是一个结构体类型,该结构体提供了两个静态变量:concurrent和initiallyInactive(注意,没有代表串行队列的静态变量)。如果attributes参数传值为initiallyInactive, 任务不会自动执行,而是需要开发者手动调用activate()触发。但是代码依然是串行进行的,如果想要手动触发、并行执行任务,可以指定attributes参数接受一个数组: [.concurrent, .initiallyInactive]。
    DispatchQoS:是一个结构体 代表队列的优先级,有6中可选值.优先级从高到低依次为
         public static let userInteractive: DispatchQoS
         public static let userInitiated: DispatchQoS
         public static let utility: DispatchQoS
         public static let background: DispatchQoS
         //default和unspecified优先级介于userInteractive和background
         //之间,具体优先级有系统决定.
         public static let `default`: DispatchQoS
         public static let unspecified: DispatchQoS

DispatchQueue.AutoreleaseFrequency有三种属性值:.inherit、.workItem和.never。

  • .inherit:不确定,之前默认的行为也是现在的默认值
  • .workItem:为每个执行的任务创建自动释放池,项目完成时清理临时对象
  • .never:GCD不为您管理自动释放池
    参数target 用于指定即将创建的队列与队列target优先级相同。也可通过setTarget(queue: DispatchQueue?)函数指定与queue相同的优先级。
    除了开发者自己创建队列,还可以通过DispatchQueue.main获取主队列(主队列也属于串行队列)、DispatchQueue.global(qos: DispatchQoS.QoSClass) 获取全局并发队列。

相关文章

  • Swift补充- 多线程(DispatchQueue & Dis

    目录 DispatchQueue DispatchWorkItem 1 DispatchQueue 队列 asyn...

  • DispatchQueue

    DispatchQueue 分为串行和并发,它的完整初始化方法为:DispatchQueue.init(label...

  • GCD全集

    (一)GCD的API 1.DispatchQueue (1).DispatchQueue 先进先出FIFO (2)...

  • GCD 在 Swift 中的用法

    DispatchQueue Swift 中,对 GCD 语法进行了彻底改写。引入了 DispatchQueue 这...

  • Swift GCD

    一、DispatchQueue DispatchQueue 分为串行和并发,它的完整初始化方法为: 可见,这些参数...

  • Telegram开源项目之DispatchQueue

    DispatchQueue介绍 在特定的线程(单线程)下串行执行的任务队列 DispatchQueue作用 在特定...

  • DispatchQueue swift

    funcexdispathQueue(){//自定义的dispatchQueue letserialQ =disp...

  • Swift--GCD的使用

    DispatchQueue DispatchQueue是一个类似线程的概念,这里称作对列队列是一个FIFO数据结构...

  • 延迟执行

    let time: TimeInterval = 1.0 DispatchQueue.main.asyncAfte...

  • swift 延时执行方法

    DispatchQueue.main.asyncAfter(deadline: <#T##DispatchTime...

网友评论

      本文标题:DispatchQueue

      本文链接:https://www.haomeiwen.com/subject/qkwujctx.html