【发布时间】: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