gpt4 book ai didi

windows - 避免在 Windows 批处理文件中同时调用

转载 作者:可可西里 更新时间:2023-11-01 10:55:42 27 4
gpt4 key购买 nike

我有一个通用的 Windows 构建批处理(即 build.bat),它以不同的参数并行运行。

start build.bat device1
start build.bat device2
start build.bat device3

但是在那批中有一个可执行文件在并行调用时崩溃。

是否有可能,使用 Windows 内置函数,当它已经在另一个批处理中运行时阻止这个调用,并在它在另一个批处理中完成时继续?

假设该批处理的内容是

start delay 5

当批处理被多次调用时,当另一个延迟当前正在运行时,延迟不得运行。

这类似于信号量。

所以我们的目标是拥有这样的东西

CheckAndWaitIfDelayIsRunning
start delay 5

提前致谢。

最佳答案

您可以使用按文件锁定来批量构建信号量。

:lock
2>nul (
> sema1.lock (
delay 5
REM The next line is for proper finishing the lock block
(call )
)
) || goto :lock

诀窍是,一次只允许一个进程写入 sema1.lock。
任何其他进程都将失败并跳过内部 block ,即 || goto :lock 将重试,直到可以写入 sema1.lock 文件。
这种技术的一个缺点是消耗 CPU,因为这个信号量并不是真正的等待,它更像是一个轮询信号量。

有关更多信息,请参阅 SO:How do you have shared log files under Windows?

关于windows - 避免在 Windows 批处理文件中同时调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38911742/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com