/* Page prose (ja) */
"WrappingUp" = "# まとめ\n\nGCD の約束はまるごと、スレッドを管理するのをやめてクロージャを**キュー**に渡し始める、というものです。どのキューが何をするか、そして `async` か `sync` かというただ一つの判断に慣れれば、あとは細部です。鋭い刃のほとんどは `sync` の周りにあるので、それに手を伸ばす前に下の要点を読んでください。\n\n* **GCD がスレッドを代わりに管理します。** クロージャを**キュー**に渡すのであって、自分でスレッドを作るのではありません。\n* 3つのキュー: **メイン**（UI、シリアル）、**グローバル**（共有のバックグラウンド、並行）、**カスタム**（`DispatchQueue(label:)`、デフォルトでシリアル）。状態を守ったり作業の流れに名前を付けたりするにはカスタムキューを、「これをメインから外す」だけなら `global()` の方がシンプルです。\n* **`async`** は処理をスケジュールしてすぐに制御を返します。**`sync`** は処理が終わるまで現在のスレッドをブロックします。ほとんどの場合 `async` が欲しいはずです。\n* **シリアル**キューは順序と重なりのなさを保証します。**並行**キューはタスクを並列に実行し、どんな順序でも終わります。その完了順序に決して依存しないでください。\n* 中心のパターンは、**バックグラウンドキューで処理を行い、その後 `DispatchQueue.main.async` に戻ってUIを更新する**ことです。メインスレッド以外でUIに触れるのは未定義動作です。\n* **QoS** は処理がどれだけ緊急かを GCD に伝えます。誰かが待っているか、そして見ているかを問うて選びましょう。\n* **落とし穴:** メインスレッドからの `main.sync` は**デッドロック**します。決してやらないでください。\n\n---\n\n## 次は\n\n次は **[グループとセマフォ](Groups%20and%20Semaphores.playgroundchapter/Overview)** です。ディスパッチされた処理のバッチ全体が終わるのを待つ方法と、一度にいくつのタスクがリソースに触れるかを制限する方法を扱います。\n\n[前へ](@previous)  |  9 / 9 ページ";
