如果两个后台作业是从同一个会话开始的,其中一个如何确定另一个已经完成?最初我尝试过这样的事情:
$j1 = Start-Job {
Start-Sleep -Seconds 5
"j1 done"
}
$j2 = Start-Job {
param($j)
"j2 waiting..."
$j | Wait-Job
"j2 done"
} -ArgumentList $j1.Finished
$j1,$j2 | Receive-Job -Wait
当然它不起作用,因为$j2
只获取了一个序列化的快照$j1
(快照中的作业状态永远不会改变);此外,每个后台作业都有自己的作业存储库,因此$j
对象在$j2
.
作业可以通过互斥锁、文件系统(如果在同一台机器上)或数据库等进行同步,但我想知道 powershell 是否为此提供了任何远程处理友好的设施?