代码之家  ›  专栏  ›  技术社区  ›  07_05_GuyT

并行执行进程,等待并执行其他进程

  •  0
  • 07_05_GuyT  · 技术社区  · 7 年前

    我使用以下代码并行执行目标。现在,我希望它可以并行工作,但是有一些目标最终需要执行,比如 wait 对于3个并行运行的进程,完成后再执行另外2个进程。我该怎么做?

    例如,这里是 pack cleanup 之后运行 module1 module2 将并行运行 .

    NPROCS = $(shell sysctl hw.ncpu  | grep -o '[0-9]\+')
    MAKEFLAGS += -j$(NPROCS)
    all: module1 module2
    
    .PHONY: module1
    module1:
        @echo "run module 1"
        DIR=$(PWD)
        @echo $(DIR)
    
    .PHONY: module2
    module2:
        @echo "run module2”
    .PHONY:
    pack:
       pack $(DIR)
    cleanup: 
        gbt clean $(DIR)
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Biffen Asad Mukhtar    7 年前

    这是先决条件之一 make 他的长处,是为了。

    更改:

    pack:
    

    艾斯

    pack: module1 module2
    

    这说明 制作 那个 pack 目标有两个先决条件; module1 module2 .

    这意味着 制作 不会跑的 包装 直到两个 模块1 模2 完成 正在运行。它们是否并行运行不会有什么区别。


    如果有很多先决条件,可以将它们放入宏中,例如:

    modules = module1 module2 …
    
    pack: $(modules)