/* Page prose (ja) */
"StructuredGuarantee" = "# 構造化された保証\n\ntask group は**構造化された並行処理**であり、その「構造化された」という言葉は、声に出して言う価値のある約束を担っています。\n\n**`withTaskGroup` のスコープは、すべての子タスクが終了するかキャンセルされるまで戻りません。** どの子もグループより長生きできません。制御が閉じ括弧を通過するとき、影で走り続けている残りのタスクはゼロです。\n\nだからこそ、子タスクを手で追跡したり、自分でキャンセルしたり、1つが逃げ出して先へ進んだあとも CPU を燃やし続けているのではと心配したりする必要はありません。コードの*構造*、つまりグループの括弧が、処理の*生存期間*を区切ります。前ページのスローする例でさえ、キャンセルされた兄弟が実際に停止するまで、グループは戻りませんでした。\n\nキャンセルは、[タスクとキャンセル](Tasks%20and%20Cancellation.playgroundchapter/Overview) の章と同じように流れます。**ツリーを下って**いくのです。グループを所有するタスクをキャンセルすると、すべての子もキャンセル済みとしてマークされます。そして子はただの普通のタスクなので、同じようにキャンセルを観測します。`Task.sleep` は `CancellationError` をスローし、長いループの中では `Task.isCancelled` を確認して早めに抜け出せます。";
"StructuredGuarantee-2" = "**実行して確認:** `stack` をキャンセルすると、それがグループへ、そして100個すべての子へと伝播します。それらの `Task.sleep` 呼び出しはスローして巻き戻り（ここでは `try?` がエラーを飲み込んで `nil` を返すので、それらのフレームはフォールバック値を提供します）、それでもグループはきれいに戻ります。答えが「止まれ」であっても保証は保たれるからです。何もリークしません。\n\n[前へ](@previous)  |  7 / 9 ページ  |  [次へ: 同時実行数を制限する](@next)";
