• 任务+队列
  • 易用
  • 效率
  • 性能

 

底层是开源的

底层地址:​​https://opensource.apple.com/tarballs/libdispatch/​

主要功能

  • 创建管理Queue
  • 提交job
  • Dispatch Group
  • 管理Dispatch Object
  • 信号量Semaphore
  • 队列屏障 Barrier
  • Dispatch Source
  • Queue Context数据
  • Dispatch I/O Channel
  • Disaptch Data 对象

重要概念-队列

  • 主队列:任务在主线程中执行
  • 并行队列:任务会以先进先出的顺序入列出列,,但是因为多个任何可以并行执行,所有完成的顺序是不一定的
  • 串行队列:任务会以先进先出的顺序入列和出列,但是同一时刻只会执行一个任务

GCD 队列API

  • Dispatch.main
  • Disapatch.global
  • DispatchQueue(label:qos;,atributes:,autoreleaseFrequency:target)
  • queue.label
  • setTarget(queue:DisPathcQueue?)

swift 多线程 GCD概念_并行执行

  • 最终的目标队列都是主队列和全局队列
  • 如果把一个并行队列的目标队列设置为一个串行队列,那么并行队列将不再并行
  • 如果多个队列的目标队列都设置为同一个串行队列,那么这个队列连同队列的任务都将串行执行
  • 如果设置了目标队列形成环了。结果是不可预期的。
  • 如果在一个队列正在执行任务的时候更换目标队列。结果也是不可预期的