避免makefile中的竞争条件的最佳做法?

时间:2013-06-17 19:43:49

标签: build compilation makefile

当你编写一个应该并行运行的makefile时,你知道一些避免竞争条件的方法吗?有某种障碍吗?我如何按顺序运行某些部分?或者,如何在创建某个关键对象之前暂停其他处理器?

谢谢!

1 个答案:

答案 0 :(得分:1)

您需要考虑以下几点:

  1. 不生成未指定为目标的文件。例如,如果你有2个巧合产生“fred.tmp”的规则(甚至可能在之后删除它们),并且它们都同时运行,那么会发生不好的事情
  2. 尽可能缩短构建规则。最好是一个命令。
  3. 不要做递归构建。即使它们没有中断,-j也会传递给每个子make,导致CPU使用率呈指数上升。
  4. 标准制作中没有办法表明2个规则不能并行运行。

    您可能还需要考虑调查其他一些构建工具(例如SCons),看看它们是否能更好地解决您的问题。