1

是否有 Windows(或 .NET)同步原语:

  • 可以在同一台PC上的多个进程之间共享;
  • 表示当前有多少线程依赖于共享资源的计数器;
  • 当进程异常终止时由操作系统自动递减;和
  • 可以由另一个进程等待(并在计数降至零时发出信号)?

我想跨多个进程共享一个资源,然后在最后一个进程退出(无论是正常还是异常)或声明它已完成该资源时关闭该资源。启动时必须进行一些握手,但这是可行的;有趣的部分是等待进程退出。

据我所知,命名信号量(具有高初始计数)可以满足除最后一个要求之外的所有要求。但是信号量倒计时而不是倒计时,而且我看不到等待信号量达到最大计数的方法。

如果不存在这方面的原语,是否有一个 .NET 库可以创建类似的东西,或者有关如何构建的信息?

(这是针对我如何才能等到 Windows 进程及其子进程全部退出?的可能实现。但是,尽管这个问题有许多可能的方法,但在这里我特别想探讨同步对象是否能胜任任务。它们是我想到的第一种方法,但我希望在这里了解它们是否真的会为此工作。)

4

1 回答 1

1

没有满足所有这些条件的原语。您必须构建自己的跨进程等效的CountdownEvent.

于 2010-07-13T13:25:49.670 回答