令和7年度 秋期 午前 問17
開発技術
スレッドセーフの説明
スレッドセーフの説明として,適切なものはどれか。
- アアプリケーションが複数のスレッドから呼び出されないようになっている。
- イアプリケーションを複数のスレッドではなく,単一のスレッドで動作させる。
- ウアプリケーションを複数のスレッドで並列に実行しても,問題が生じない。
- エスレッドの競合が発生したときに,アプリケーションを安全に停止させる。
答えと解説を見る
✓ これが正解ウアプリケーションを複数のスレッドで並列に実行しても,問題が生じない。
解説
同時に使っても壊れないという性質のことです。
この設問は、スレッドセーフの説明として四つの記述のうち当てはまるものを選ばせています。ですから見分けの軸は、複数のスレッドから同時に使ってよいという保証を述べているのか、それとも同時に使えなくするという回避策を述べているのかという一点だけです。スレッドセーフとは、複数のスレッドから並列に呼び出されても、共有する状態を壊さずに正しく動くという性質を指します。何が問題になるかというと、同じデータを複数のスレッドが同時に書き換えることで、実行の順序によって結果が変わってしまう競合状態です。防ぐ手段は、共有する状態を持たないか、局所変数だけで完結させるか、どうしても共有するなら排他制御で守るといった書き方に落ちてきます。したがって当てはまる説明は、複数のスレッドで並列に実行しても問題が生じないというものです。
ほかの選択肢はなぜ違うのか
- アアプリケーションが複数のスレッドから呼び…:複数のスレッドから呼び出されないようになっているという説明は、そもそも同時に使わせないという制限を述べたもので、性質そのものではなく回避策の側に立った書き方です。スレッドセーフの主旨は同時に使ってよいという保証なので、向きが違います。
- イアプリケーションを複数のスレッドではなく…:複数のスレッドではなく単一のスレッドで動作させるという説明は、並列そのものをやめて競合を避けるという回避策の話に当たります。同時に使っても壊れないという性質を述べているわけではなく、意味の向きが逆です。
- エスレッドの競合が発生したときに,アプリケ…:スレッドの競合が発生したときに安全に停止させるという説明は、競合が起きた後の後始末の話で、そもそも競合が起きないようにするというスレッドセーフの主旨とは話そのものがずれています。安全に止めることが目的ではありません。
出典:令和7年度 秋期 応用情報技術者試験 午前 問17
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)