如何防止制作中的竞争条件?

时间:2014-02-07 16:05:35

标签: concurrency makefile gnu

正如标题所暗示的那样,我怎样才能防止犯规中的竞争条件?

我的具体用例是我想要的clean然后构建all目标:

make -j 4 clean all

我应该放弃并解决make clean && make -j 4 all吗?

2 个答案:

答案 0 :(得分:2)

你不能真正并行执行构建目标的配方和另一个破坏目标的配方。

您有什么用例不会满足于:

make clean && make -j4

答案 1 :(得分:1)

我认为实现这项工作的唯一方法是将其放在Makefile

all : clean

你不想要(显然)。我的下一个想法是:

clean_all: clean
    $(MAKE) all

这样你就可以写make -j clean_all,但我也不满意。