- 任务+队列
- 易用
- 效率
- 性能
底层是开源的
底层地址: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?)
- 最终的目标队列都是主队列和全局队列
- 如果把一个并行队列的目标队列设置为一个串行队列,那么并行队列将不再并行
- 如果多个队列的目标队列都设置为同一个串行队列,那么这个队列连同队列的任务都将串行执行
- 如果设置了目标队列形成环了。结果是不可预期的。
- 如果在一个队列正在执行任务的时候更换目标队列。结果也是不可预期的