operating-system - 什么样的代码可以称为 "re-entrant"?

标签 operating-system

有人能告诉我什么代码可以称为“重入”代码吗?

我在阅读一些实时操作系统时遇到了这个词。为了使代码成为“可重入”代码,必须遵守哪些规则?

最佳答案

通常,可重入代码块是可以在较早的调用完成之前由另一个参与者输入的代码块,而不会影响第一个参与者通过代码所采用的路径。也就是说,可以在代码已经运行时重新输入代码并仍然产生正确的结果。

在大多数情况下,“参与者”是同一进程的线程,但 的概念thread safety 和可重入略有不同:并非每个线程安全 block 都是可重入的,但每个可重入 block 都是线程安全的。也就是说,可重入性是比线程安全性更强的属性。这里是 a good example 来自 Raymond Chen 关于代码块如何是线程安全但不可重入的。

当代码是递归的时,有一种特殊情况:正如 Marc Gravell 指出的那样,同一个参与者在其自己的调用完成之前调用代码。所有正确的递归 block 都是可重入的;当然,并不是每个可重入 block 都是递归的。

关于operating-system - 什么样的代码可以称为 "re-entrant"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2274254/

相关文章:

Linux 内核在堆溢出或堆栈溢出时的行为

operating-system - Windows 内核模式驱动程序如何访问分页内存?

.net - .NET中线程的RAM和CPU限制

c - 为什么我的linux系统调用时间几乎是0us?

python - 当 CPU 利用率已经接近 100% 时,多线程是否有帮助?

python - 从文件路径仅获取文件名(不带扩展名和目录)

linux - 如何在 linux 中读取正在运行的进程的线程组 ID

c - sys_schedule() 在 Minix 3.1.8 中做什么?

linux - 是否有可能完全管理流程及其分支的生命周期?

python - 如何让我的应用程序服务器 CPU 达到 100%?