实现多线程时批处理文件中的".lock"有什么用?



代码如下:由于我是批处理脚本的新手,我无法理解为什么。为什么小于等于9

set "lock=%temp%wait%random%.lock"
start "" cmd /c 9>="%lock%1" abcd.bat 4441 %tempdate%
start "" cmd /c 9>="%lock%2" pqrs.bat 4442 %tempdate%
for %%N in (1 2 3 4 5 6 7 8 9) do (
        9>="%lock%%%N" || goto :Wait
) 2>nul

9>不是比较表达式,它是输出流的重定向。
语法9>=是无意义的,因为=在这里没有意义,因为它将被删除。

输出流9通常不存在,输出将是空文件"wait1000"。Lock1"one_answers"wait1000"。lock2"(假设%random%在本例中为1000)。

FOR循环只是测试它是否可以写同一个文件,这将被阻塞,直到批处理文件退出,写锁将被释放。
当至少有一个文件被锁定时,9>"%lock%%%N"命令失败,然后goto :wait将被执行。

顺便说一句。标签:Wait在您的示例文件
中缺失它应该插入到for循环

最新更新