リエントラント | Programming Place Plus 用語集

トップページ用語集

名称

解説

実行中のプログラムサブルーチンが完了しないうちに、同じプログラムやサブルーチンを再び呼び出したとしても正常に動作でき、それぞれの実行が互いに影響を与えないことをいいます。

たとえば、マルチスレッドで動作するプログラムは、あるスレッドが実行中のサブルーチンを、その処理が完了しないうちに、ほかのスレッドも呼び出す可能性があります。また、割り込みによって呼び出されることも考えられます。そういった場合に、それぞれの実行が互いの動作に影響を与えたり、動作が正常でなくなったりしなければ、そのサブルーチンはリエントラント(再入可能)であるといえます。

プログラムそのものの場合は、同じプログラムを複数実行しても問題がなければ、そのプログラムはリエントラントであるということになります。

サブルーチンの中で、静的変数グローバル変数メモリ上のどこかにあるデータの読み書きや、ファイルなどの外部データの I/O といったことをしている場合、ある呼び出しのときに書き換えられたデータを、ほかの呼び出しのときに参照していると、互いの処理の影響を受けていることになるので、リエントラントではないことになります。サブルーチン内でしか生存しないローカル変数自動変数)を使っているだけであれば、それぞれの呼び出しが互いに影響を与えることはなく、リエントラントである可能性が高いです。

再帰呼び出しを実現するためには、そのサブルーチンがリエントラントである必要があります。


参考リンク

更新履歴


用語集のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る