【问题标题】:Synchronization primitive for shared usage counter?共享使用计数器的同步原语?
【发布时间】:2010-07-13 12:57:42
【问题描述】:

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

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

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

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

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

(这是How can I wait until a Windows process, and its subprocesses, have all exited? 的可能实现。但是,虽然这个问题有很多可能的方法,但在这里我特别想探索同步对象是否能够胜任任务。它们是我想到的第一种方法,但我希望在这里了解他们是否真的会为此工作。)

【问题讨论】:

    标签: .net windows synchronization reference-counting


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-03
      • 2012-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-11
      相关资源
      最近更新 更多