并行多个io.filesystemwatchers

问题描述 投票:2回答:1

我希望将三个不同的任务外包给Powershell中的文件系统观察者。我已经设置了全部代码来初始化两个观察者,并每十秒钟检查一次以确保它们正在运行。但是,他们执行的任务分别持续不到一分钟和5分钟。我希望外包给观察者的第三项任务大约需要一个小时。我担心如果我让它们全部同时运行,那么如果第三个观察者正在执行其更改操作,则前两个应注意的任务将根本无法完成。有没有一种方法可以实现或运行它们,以便可以并行执行更改操作?

powershell parallel-processing filesystemwatcher
1个回答
0
投票

您可以使用Start-ThreadJob cmdlet并行运行文件监视任务。

  • Start-ThreadJobStart-ThreadJob一起提供,并且是基于子进程的常规后台作业的一种基于thread的轻量级替代方案。它随PowerShell [Core] v6 +一起提供,并且在Windows中可以按需安装PowerShell,例如ThreadJob module。在大多数情况下,对于性能和类型保真度而言,线程作业是更好的选择-有关原因,请参见ThreadJob的底部。

以下独立的示例代码:

  • 使用2个线程作业并行运行不同的处理任务
  • 它们不会互相阻塞,也不会阻塞调用者的线程。

为简单起见,在两个线程中都使用了由调用者创建的single Install-Module ThreadJob -Scope CurrentUser实例;通常,有必要限制同时使用的这种类型的实例的数量,以避免系统过载。

this answer
© www.soinside.com 2019 - 2024. All rights reserved.