スレッドセーフ
あるコードの断片がスレッドセーフかどうかを判断するのは簡単ではない。しかし、以下のような点に注意して調べることで問題が見つかることが多い。
グローバル変数(広域変数)などの静的記憶域期間を持つ変数や、動的メモリ確保されたヒープ領域にアクセスしているかどうか
グローバルな制限のあるリソース(ファイル、プロセスなど)を確保・解放しているかどうか
参照やポインタによる間接アクセスをしているかどうか
明確な副作用があるかどうか(例えば、C言語で volatile 変数にアクセスするなど)
スタック上の変数のみを使用し、引数にのみ依存し、同様な特性のサブルーチンしか呼ばないならば、そのサブルーチンはリエントラントであり、スレッドセーフである。このようなサブルーチンは「純関数; pure function」などと呼ばれることもあり、数学の関数によく似ている。
静的コード解析ツールの中には、プログラムの並行性に関するバグをある程度検出してくれるものもあり、スレッドセーフでないコードに対して警告を出す。