使不可重入的函数可重入

时间:2013-07-10 16:28:20

标签: c refactoring reentrancy

我正在使用普通的旧c。

我有一个使用静态局部变量的函数,因此是不可重入的。我想删除静态本地的使用并使函数可重入。

有关如何执行此操作的任何提示或设计建议?

这个问题太模糊了吗?是否需要有关我目前正在使用的设计的更多详细信息?或者是否存在可以在这种情况下遵循的一般设计模式?

2 个答案:

答案 0 :(得分:1)

让调用者将这些状态变量作为参数传递给函数,而不是使用静态局部文件来维护状态。这意味着你的来电者必须保持状态,但这通常是你想要的。

答案 1 :(得分:0)

您可以使用以下解决方案保护您的代码:

  1. Mutex 信号量与静态变量一起使用。
  2. 在功能前禁用中断,在完成后启用它。
  3. 禁用多任务系统的调度。
  4. 使用局部变量。