問17 スレッドセーフとは

応用情報​技術者試験 令和7年度 秋期 午前、全80問のうちの問17。

出典:令和7年度 秋期 応用情報技術者試験 午前 問17

スレッドセーフの説明として,適切なものはどれか。

  1. アアプリケーションが複数のスレッドから呼び出されないようになっている。
  2. イアプリケーションを複数のスレッドではなく,単一のスレッドで動作させる。
  3. ウアプリケーションを複数のスレッドで並列に実行しても,問題が生じない。
  4. エスレッドの競合が発生したときに,アプリケーションを安全に停止させる。
答えと解説を開く

正解はウです。

スレッドセーフとは、プログラムや関数が、複数のスレッドから同時に使われても、データが壊れたり結果がおかしくなったりせず、正しく動く性質のことです。共有するデータを排他制御で守る、共有のデータを持たない、などの作りで実現します。この説明に合うのはウです。

ほかの選択肢が違う理由

  • ア複数のスレッドから呼べなくするのは、問題を避けているだけで、スレッドセーフとは言いません。スレッドセーフは、呼ばれても大丈夫な性質です。
  • イ単一のスレッドで動かせば取り合いは起きませんが、それはシングルスレッドで動かすという運用の話です。
  • エ競合が起きたときに止めるのは、異常時の扱いの話です。スレッドセーフは、そもそも競合で壊れない作りのことです。

仕組み

スレッドは、1 つのプログラムの中で同時に進む処理の流れです。同じプログラムのスレッドはメモリを共有するので、2 つが同じ変数を同時に書き換えると、片方の書き込みが消えるといった不具合が起きます。

これを防ぐには、ロックで同時に触れないようにする、値を書き換えない (不変にする)、スレッドごとに別のデータを持つ、といった方法があります。

この問に出る言葉