我正在寻找一种没有副作用的方法.
理想情况下,以下代码可以解决这个问题:
long currentCount = 0;
::ReleaseSemaphore(h, 0, ¤tCount);
Run Code Online (Sandbox Code Playgroud)
但不幸的是,0不允许作为lReleaseCount的值,因此调用返回FALSE.
如果您想要外部监控的值(正如您在评论中建议的那样),那么要么在调用后使用以前的值,ReleaseSemaphore()要么恕我直言,更好的解决方案是除了信号量之外还实现自己的“互锁”计数器;然后你就有了你的监控计数,并且可以以任何你喜欢的方式访问它......只是不要用它作为查看是否可以“输入”信号量的方式......
正如克里斯所说,您无法获取当前计数,因为它可能总是在变化。
| 归档时间: |
|
| 查看次数: |
6459 次 |
| 最近记录: |