2

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

谢谢!

4

1 回答 1

1

您需要考虑以下几点:

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

标准制作中没有办法表明 2 个规则不能并行运行。

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

于 2013-06-18T12:25:30.493 回答