/* Page prose (zh-Hans) */
"Overview" = "# GCD 基础\n\n![Grand Central Dispatch](Grandcentralicon.png)\n\n在[为什么需要并发](Why%20Concurrency.playgroundchapter/Overview)这一章里，你感受到了问题所在：在主线程上执行繁重的工作会让 app 卡死。现在你需要一个能把工作移*出*主线程的工具。回到街角的咖啡吧，想象经理不再手动分派咖啡师，而是装了一条**订单轨道**：你把订单票夹到轨道上就走开；哪个咖啡师空了就取走下一张票。你永远不用去想咖啡师，只需要想订单票以及它们该放到哪条轨道上。那条订单轨道就是 **Grand Central Dispatch**，而这一章讲的就是如何使用它。\n\n---\n\n## 你将学到\n\n* 什么是 **Grand Central Dispatch (GCD)**，以及为什么你把闭包交给它，而不是自己创建线程。\n* 三种**调度队列**（主队列、全局队列和自定义队列）以及何时该用哪一种。\n* **串行 vs. 并发**队列：每一种对顺序和重叠各自保证了什么。\n* **`async`**（“调度它，然后继续往下走”）和 **`sync`**（“阻塞直到它完成”）之间的关键区别。\n* 那个经典模式：在后台队列上做工作，然后**跳回主线程**去操作 UI。\n* **服务质量（QoS）**：你如何告诉 GCD 一个任务有多紧急。\n\n---\n\n## GCD 到底是什么\n\n**Grand Central Dispatch** 是一个系统库，它替你管理一个后台线程池。你不必自己创建和杂耍般地摆弄线程（那既容易出错又容易做过头），而是把工作打包成一个**闭包**，交给一个**队列**。GCD 决定它在哪个线程上运行，并在你的整个 app 中高效地复用一小组线程。\n\n这种反转就是全部要点。你不再问*“这应该在哪个线程上运行？”*，而是开始问*“这应该放到哪个队列上，顺序重要吗？”*你思考订单票和轨道；GCD 管理咖啡师。\n\n一个**调度队列**就是一列等待运行的闭包。你把工作添加到队尾；GCD 从队首取出工作，在它管理的线程上运行。这一章里的一切都是这个单一想法的变体。\n\n接下来，认识一下你真正会用到的三种队列。\n\n第 1 / 9 页  |  [下一页: 你会用到的三种队列](@next)";
