リエントラント
したがってリエントラント性を阻害する。
リエントラント性はスレッドセーフの概念と類似してはいるが、完全に等しいものではない。関数がスレッドセーフであっても、リエントラントでないことがある。例えば関数全体をミューテックスで囲むと、再入が発生しない条件下でのマルチスレッド環境では期待通りの挙動になるが、ミューテックス所有中にスレッドとして実装されていない割り込みが生じて再入が発生するとミューテックスの解放を待ち続けてデッドロックとなる。これはミューテックスが割り込まれた処理と割り込みサービスルーチンの間で共有されていることが原因である。混乱を避ける鍵は、リエントラントが1つのスレッド実行でも問題になるという点である。リエントラント性は割り込まれた処理が割り込みサービスルーチンの終了まで全く動作できないために問題となる性質であり、マルチタスクOSの存在する前からの概念である。
リエントラントな関数はグローバルなデータを使えないわけではない。例えばリエントラントな割り込みサービスルーチンは、(例えば、シリアルポートのバッファを読み取るなど)ハードウェアのステータス情報を取得できるが、それはグローバルなデータであると同時に揮発性である。それでも静的変数やグローバルなデータを普通に使うことは勧められず、不可分なリード・モディファイ・ライト命令を使ってそのような変数にアクセスするべきである(そのような不可分命令を実行中は割り込みやシグナルが処理を中断できない)。