応用情報暗記無料で始める

スレッドセーフとは?すれっどせーふ

スレッドセーフとは、複数のスレッドから同時に呼び出されても内部の状態が壊れず、期待どおりの結果を返す性質。実現の道は2つあり、共有する状態をそもそも持たないように書くか、持つならミューテックスなどで排他して守るかである。どちらを選ぶかは、排他に伴う待ちとオーバヘッドを払えるかで決まる。

最終更新:2026-10-06

試験情報

応用情報技術者試験の過去問では1回出題されています。

応用情報技術者試験の頻出用語/テクノロジ系

この語が出る過去問を解く →

背景

単一のスレッドしか走らなかった時代は、関数の内部で静的な領域を使い回しても誰にも邪魔されなかった。マルチコアが当たり前になると同じ関数が本当に同時に走るため、値を読んで書き戻すまでの隙間に別のスレッドが割り込む。標準ライブラリの古い関数に別名の安全版が用意されているのはこの事情によるもので、応用情報では排他制御が要るかどうかを判断できるかが問われる。

具体例

Javaでは、内部を同期しているVectorやHashtableに対し、同期しないArrayListやHashMapが用意されており、必要なときだけ呼出し側で同期を掛ける設計になっている。組込みでは、動的メモリ確保の関数にミューテックスを持たせるか、非スレッドセーフ版を選んで呼出し側でクリティカルセクションを組むかを選択する。

試験での引っ掛け

個々の関数がスレッドセーフでも、複数の呼出しにまたがる一連の処理は保護されない。存在を確認してから追加する2段階の操作は、あいだに割り込まれれば壊れるので、呼出し側でまとめて排他する必要がある。再入可能(リエントラント)と同義ではなく、ロックで守った関数はスレッドセーフだが再入可能ではない。

関連用語

出た過去問

解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。

この語が出る過去問を解く →

試験での特徴
  • 試験では1回出題
  • 分野:テクノロジ系
  • 個々の関数がスレッドセーフでも、複数の呼出しにまたがる一連の処理は保護されない。