什么是可重入程序,您能否举例说明何时使用它?
编辑:另外,多个进程可以并行访问一个重入过程吗?
请提供与维基百科不同的解释方式,因为我不完全理解他们的描述,因此我的问题在这里
最佳答案
重入背后的想法是例程可以在它已经在执行的过程中被调用并且它仍然可以正常工作。
通常这是通过仅使用在堆栈上声明的参数和局部变量来实现的(在 C 术语中,没有 static
局部变量)。它在执行期间不锁定任何全局资源也很重要。
现在,您可能会问,“一次运行多次这样奇怪的事情怎么会发生呢?”好吧,这可能发生的一些方式是:
- 例程是递归的(或与其他一些例程相互递归)。
- 它被另一个线程调用。
- 它被中断调用。
如果其中任何一个发生,并且例程正在修改全局(或 C static
局部),那么新的执行可能会消除第一次执行所做的更改。例如,如果该全局变量被用作循环控制变量,它可能会导致第一次执行,当它最终恢复时,循环错误的次数。
关于c - 什么是重入程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7025857/