[GCD] 调度队列:先进先出(FIFO)、优先级与队列类型
DispatchQueue 是 GCD 中用于发送工作的对象,它接收闭包而非线程。该队列负责管理这些代码块的执行时机与方式。其遵循先进先出(FIFO)原则,确保任务按调度顺序开始执行,但完成顺序未必相同。系统为每个已调度的任务分配一个优先级,称为服务质量(QoS)。这些优先级从用于即时 UI 更新的 .userInteractive 到用于无感知任务的 .background 不等。高优先级任务会获得更多系统资源,而误用优先级可能导致性能下降。GCD 提供三种获取 DispatchQueue 的方式:与 UI 线程绑定的串行主队列、为每个 QoS 级别提供的系统级并发全局队列,以及由开发者创建的自定义队列。自定义队列默认为串行,但可设置为并发。主队列对所有 UI 相关操作至关重要。全局队列由系统共享和管理,每个 QoS 级别拥有专用队列。自定义队列允许开发者定义自己的串行或并发任务执行环境。自定义队列的标签仅用于调试目的。后续文章将探讨在串行和并发队列上进行同步与异步调度的差异。