再入可能
Reentrant
ある関数の実行中に、その関数にもう一度入っても問題が起こらないこと。
再帰に似ているが、再帰とは異なり、別の要因で処理中に同じ関数にたどり着いてしまうことがある。この時に、前の実行中の処理に影響しない、および、自分自身の実行も問題なく動作すること。 問題が起こるケース
グローバル変数や、関数の共有領域に変数(C言語であればstatic変数)がある時に、変数へのアクセスで競合する。
出力順が問題となるようなケースで、その出力順を破壊してしまう。
同時に実行されては困るようなものが同時に実行されてしまう。(ABの順を期待しているのにAABBのようになる)
プログラミング言語から見た再入可能について
プログラミング言語側では再入可能の正当性を判定することは難しい。
いわゆる純粋関数ではこの問題は起きない。
Keyword: リエントラント