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

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

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

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

指南就足够了。

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

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

  2. 如果我需要使用任何全局参数或指针(为了性能或存储),请使用互斥锁或信号量来控制对它的访问。

  • 请使用局部变量。
  • 不要使用静态局部变量或全局变量,即使TLS也无法帮助您进行递归/重入。
  • 在进行回调之前恢复所有不变量。
  • 在进行回调时不要握住锁。 如果你绝对必须(我仍然会寻找避免它的方法),那么请确保你知道如果你试图在已经拥有它的线程上重新输入锁定会发生什么。 至少你必须测试这个,否则根据锁定你会遇到死锁或破坏不变量(即腐败)。

没有。 编写非重新输入代码通常比重新编写代码更困难。 只要遵循这些简单的指导原则,不要试图做任何太过闷闷不乐的事情,你会没事的。

非重新输入代码通常是针对高性能问题编写的。

  1. 可重入函数可能不以非primefaces方式使用变量,除非它们存储在调用任务的堆栈中或者是该任务的私有变量。
  2. 可重入函数可能不会调用其他不可重入的函数。
  3. 可重入函数可能不以非primefaces方式使用硬件。

参考:第462页[使用RENESAS RX62N微控制器的介绍] [James M. Conrad]