スレッドセーフ|科目A-1 令和7年 秋期午前試験 問17
出典:令和7年秋期 午前 問17
分野:ソフトウェア / オペレーティングシステム
スレッドセーフの説明として,適切なものはどれか。
- ア:アプリケーションが複数のスレッドから呼び出されないようになっている。
- イ:アプリケーションを複数のスレッドではなく,単一のスレッドで動作させる。
- ウ:アプリケーションを複数のスレッドで並列に実行しても,問題が生じない。
- エ:スレッドの競合が発生したときに,アプリケーションを安全に停止させる。
TSUNAGARU-ADVICE
まず押さえたいこと
スレッドセーフとは、複数のスレッドから同時に実行されても、データの不整合や予期しない動作が起きないように作られている状態です。ポイントは、単にスレッドを使わないことではなく、並列実行しても安全に動作することです。
迷ったときの判断軸
「複数スレッドから呼び出されない」「単一スレッドで動作させる」は、並列実行を避けているだけでスレッドセーフの説明ではありません。また、競合時に停止するのではなく、そもそも競合による不整合を防ぐように、排他制御や同期処理を行う点に注目しましょう。
科目Bにつなげるために
特にプロフェッショナルデジタルスキル(システム)試験合格を目指す方は、スレッドセーフを、共有データや共有資源を複数処理から安全に扱うための設計上の考え方として理解しておくと有効です。科目Bでは、並行処理・排他制御・デッドロック・性能低下とのバランスとして問われる可能性があります。
スレッドセーフとは、複数のスレッドから同時に呼び出されたり、並列に実行されたりしても、データの不整合や予期しない動作が発生しない性質のことです。
複数のスレッドが同じ変数やファイル、メモリ領域などを同時に操作すると、処理の順序によって結果が変わることがあります。このような問題を防ぐために、排他制御や同期処理を適切に行います。
つまり、スレッドセーフは「複数スレッドで動かさない」という意味ではなく、「複数スレッドで動かしても安全に動作する」という意味です。
したがって、ウが適切です。
❌他選択肢が誤りの理由ア:アプリケーションが複数のスレッドから呼び出されないようになっている。
⇒複数のスレッドから呼び出されないようにすることは、同時実行を避ける設計です。スレッドセーフは、複数のスレッドから呼び出されても問題が生じないようにする性質を指します。
イ:アプリケーションを複数のスレッドではなく,単一のスレッドで動作させる。
⇒単一スレッドで動作させれば競合は起きにくくなりますが、それはスレッドセーフの説明ではありません。スレッドセーフは、複数スレッドで並列実行しても安全に動作することを意味します。
エ:スレッドの競合が発生したときに,アプリケーションを安全に停止させる。
⇒これは、異常時に安全に停止するフェールセーフに近い考え方です。スレッドセーフは、競合が起きた後に停止することではなく、排他制御や同期によって競合による不整合を防ぐことを指します。