通信用語の基礎知識 全国のICカードこれひとつ 戻る

通常PC用 / 人気 更新 今日 カテ
電子計算機 > ソフト > 処理方法 > タスク・スレッド
スレッドセーフ
辞書:電算用語の基礎知識 計算機OS機能編 (TCOS)
読み:スレッドセーフ
外語:thread safe
品詞:形容動詞,名詞

マルチスレッド環境で、複数のスレッドから呼ばれても問題が生じない作りになっていること。

目次
概要

スレッドセーフでないと、複数のスレッドから同時に利用された場合にバッファー/オブジェクト等が破壊されるなどし、正常に動作できなくなる。

Cの標準関数でもスレッドセーフでないものは数多くある。静的データへのポインターを返すものは全てスレッドセーフではなく、関数の戻り値を得てから使用するまでの間に別のスレッドによって結果が上書きされる可能性がある。

特徴
関数

スレッドセーフでないものとしては、C言語のstrtok()が有名。マルチスレッド処理でこの関数が使われ、発見しにくいバグを混入させる事件が今も度々発生している(Androidなどにも少なからず存在する)。

従って、スレッドセーフではない関数は絶対に使っていはいけない

スレッドセーフではないCライブラリ関数として、次のようなものがある。置き換え先となる再入可能関数を併記する。

グローバル変数

ミューテックスなど適切なロックをせずにグローバル変数を使用した場合、その変数がある特定の読み出し専用用途でない限り、そのコードはスレッドセーフではなくなる。

なお、グローバル変数に見えるerrnoは実はマクロであり、グローバル変数ではなく各スレッド毎に値を持っている。従って、同じプロセスでもスレッドが異なれば別の変数である。

リンク
関連する用語
スレッド
マルチスレッド

[再検索] [戻る]


通信用語の基礎知識検索システム WDIC Explorer Ver 7.03 (16-May-2019)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club
KisoDic