4

我需要将资源分配给线程数,所以我使用信号量来处理所有这些,然后我意识到在进程间锁定资源的情况下使用信号量。我用谷歌搜索并找到了进程内信号量的一些实现并使用了该类,但它有一些奇怪的错误。

现在我的问题是我应该使用点网信号量类吗?无论如何我可以在进程中创建信号量并降低进程间的成本(内部管理)

4

3 回答 3

4

Semaphore 类有许多构造函数。一些重载允许您指定名称。命名 Semaphore 实例使其成为可供其他进程使用的系统级信号量。如果您不需要,只需使用其他构造函数之一。尽管如此,IIRC 仍然有一个与该实例关联的内核对象。

请参阅http://msdn.microsoft.com/en-us/library/e1hct27h.aspx

于 2010-02-08T09:30:19.067 回答
3

如果您不是线程专家,我建议您坚持使用已知的工作类。所以是的,如果它适用于您的任务,请坚持使用 .NET 信号量类。

除非您有正当理由(例如分析器结果),否则不要对您的代码进行微优化。

也就是说,如果您的代码模式类似于生产者-消费者模式,那么使用 Monitor 类的有效解决方案可以避免使用 OS 同步对象。

于 2010-02-08T09:13:17.840 回答
1

从 .NET 4.0 开始,如果您不需要跨进程边界等待,则可以使用 SemaphoreSlim 类。

是关于在两者之间进行选择的另一个讨论。

于 2013-04-03T02:45:03.390 回答