C,C++中重入代码的推荐实践

Fan*_*c23 7 c c++ reentrancy

在编写可重入代码时,我正在阅读有关推荐实践的重新入门指南.

其他参考资料和资源涵盖了这个主题?

什么类似lint的工具可以用来检查这些问题?

小智 0

指南就足够了。

我个人的经验法则是重新输入代码只有 2 个:

  1. 仅接受按值传递参数,仅使用作为函数中参数传入的值。

  2. 如果我需要使用任何全局参数或指针(出于性能或存储原因),请使用互斥体或信号量来控制对其的访问。

  • 不不不!可重入!=线程。互斥体和信号量将使可重入代码陷入死锁,或者默默地无法完成其工作并导致数据损坏。 (10认同)
  • 这是可重入但非线程安全的代码的另一个示例。假设我有两个调整 FPU 控制字的函数(一个需要启用异常,另一个需要禁用它们)。这两个函数在进入时保存 FPU 控制字的当前状态,并在退出时恢复它。现在,这两个函数可以整天相互递归,您也可以从信号处理程序安全地使用它们——它们是可重入的。但它们绝对不是线程安全的。 (2认同)
  • @Chethan:如果您使用了不正确的标准术语定义,您可以使任何陈述正确。但也毫无意义。 (2认同)