Skip to main content
 首页 » 编程设计

c#之我可以使用 `Semaphore.Release` 作为现成的互锁增量吗

2024年01月31日33luoye11

我需要一个跨进程计数器。我可以在内存映射文件中映射一个整数并在其上使用 Interlocked.Increment,但在我看来 Semaphore.Release 会做同样的事情并且用更少编程开销。例如:

var mySem = new Semaphore(0, int.MaxValue, "mySemName"); 
 
// Get the next number. 
int num = mySem.Release(); 

这看起来合理吗?

请您参考如下方法:

简短回答:是

但是...您必须递增(或递减)才能阅读它。没有属性可以读取当前的槽数(这是有道理的,因为它们并不是真正的用途)。