c - 什么是重入程序?

标签 c procedure

什么是可重入程序,您能否举例说明何时使用它?

编辑:另外,多个进程可以并行访问一个重入过程吗?

请提供与维基百科不同的解释方式,因为我不完全理解他们的描述,因此我的问题在这里

最佳答案

重入背后的想法是例程可以在它已经在执行的过程中被调用并且它仍然可以正常工作。

通常这是通过仅使用在堆栈上声明的参数和局部变量来实现的(在 C 术语中,没有 static 局部变量)。它在执行期间不锁定任何全局资源也很重要。

现在,您可能会问,“一次运行多次这样奇怪的事情怎么会发生呢?”好吧,这可能发生的一些方式是:

  • 例程是递归的(或与其他一些例程相互递归)。
  • 它被另一个线程调用。
  • 它被中断调用。

如果其中任何一个发生,并且例程正在修改全局(或 C static 局部),那么新的执行可能会消除第一次执行所做的更改。例如,如果该全局变量被用作循环控制变量,它可能会导致第一次执行,当它最终恢复时,循环错误的次数。

关于c - 什么是重入程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7025857/

相关文章:

c - VB6 - 使用指针声明和调用 C DLL

c - 字典顺序与未知字节大小比较 - 在​​ c 中

node.js - 如何通过node js执行存储过程

c++ - 在 Opencv 中加载 YML 文件 - 优化

c++ - 如何在 Eclipse 中将我的项目从多个编译单元转变为单个编译单元

c - MIPS:将 C 代码转换为 MIPS 函数调用和返回中的问题

java - ORA-03115 : unsupported network data type or representation

mysql - 如何在一个过程中处理多个游标?

mysql - MySQL过程中的错误代码

c - 在 C 中每次错误检查后如何避免长链的免费(或删除)?