共享使用计数器的同步原语?

时间:2010-07-13 12:57:42

标签: .net windows synchronization reference-counting

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

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

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

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

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

(这是针对How can I wait until a Windows process, and its subprocesses, have all exited?的可能实现。但是这个问题有很多可能的方法,这里我特别想探讨同步对象是否适合任务。它们是第一个出现的方法。我,但我希望在这里学到一些关于他们是否真的能为此工作的方法。)

1 个答案:

答案 0 :(得分:1)

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