エンベデッドシステムスペシャリスト暗記無料で始める

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

スレッドセーフとは、同じ関数が複数のタスクやスレッドから同時に呼ばれても、内部で持つデータが壊れず期待どおりの結果を返す、というライブラリ側が宣言する性質。実現は共有状態を持たないか、持つなら内部で排他をかけるかの二択で、保証が及ぶのは1回の呼出しまでである。

最終更新:2026-10-06

試験情報

エンベデッドシステムスペシャリスト試験の頻出用語/午前II

エンベデッドSPを最短で暗記・合格する →

背景

ライブラリの中に隠れた静的変数があると、呼ぶ側からは見えないまま値が壊れる。strtokやerrnoの扱いが古くから問題になったのはこれで、呼出し側の努力では防げないため、性質としてライブラリ側が宣言する形になった。ただし組込みでは、保護に使うミューテックスがそのままオーバヘッドと優先度逆転の種になるので、宣言されていることが常に嬉しいわけではない。

具体例

ヒープを共有するmallocは、内部にロックを持たせてスレッドセーフにする実装が多い。newlibはそのロックをフックとして外へ出しており、組込みではロック無しの構成を選んでオーバヘッドを削り、呼出し側でクリティカルセクションを組むという判断も採れる。

試験での引っ掛け

個々の関数がスレッドセーフでも、複数回の呼出しにまたがる一連の処理は守られない。読んでから書く2段階の操作は、あいだに割り込まれれば壊れるので呼出し側でまとめて囲う。リエントラント(再入可能)とは別概念で、割込みハンドラの中から呼べるかどうかはこちらで決まる。

関連用語

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

エンベデッドSPを最短で暗記・合格する →

試験での特徴
  • 分野:午前II
  • 個々の関数がスレッドセーフでも、複数回の呼出しにまたがる一連の処理は守られない。