/* Page prose (ja) */
"ReasoningAboutThreadSafety" = "# スレッド安全性の考え方\n\n**Run** を押す前に、頭の中で実行できるチェックリストです:\n\n* **共有された可変状態を見つける。**  \n一度に複数のタスクから到達できるあらゆる `var`（プロパティ、キャプチャされた変数、コレクション）。共有され*かつ*可変な状態がなければ、data race もありません。（不変なもの、あるいは共有されていないものは、自動的に安全です。）\n* **誰が書くのかを問う。**  \n全員が読むだけなら、問題ありません。危険は最初の並行な書き手とともに始まります。\n* **読んでから書く隙間を探す。**  \n`x += 1`、「確認してから行動する」、「辞書を読んでから更新する」。値を読み、それに基づいて後で書くものはすべて、別のタスクが破損させられる隙間を持っています。\n* **協調に名前をつける。**  \n共有された可変状態の一つひとつについて、アクセスをシリアル化する*ただ一つ*のものを指し示してください。シリアルキュー、バリア、セマフォ、（のちに）actor です。それに名前をつけられないなら、競合があると考えてください。\n* **隠すことを好む。**  \n状態とその協調を型（先ほどの `Account` のように）で包み、呼び出し側が生の値に触れたりロックを忘れたりできないようにします。\n\nここでは推論が実行に勝ります。実行は信頼できないからです。あなたのエディタでは見えない競合が、誰かの古い iPhone ではクラッシュになるかもしれません。\n\n[前へ](@previous)  |  8 / 9 ページ  |  [次へ: まとめ](@next)";
