关于semaphore的一个疑问

「已注销」 2014-03-25 01:59:28
在CreateSemaphore的时候可以指定初始化资源数和最大资源数,使用Rease和Wait可以改变资源数
想问的是,有什么方法可以查看到信号量拥有的当前资源数?
...全文
143 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2014-03-25
  • 打赏
  • 举报
回复
本来就是用于多线程的东西,获取次数意义不大,因为会瞬间改变。另外 ReleaseSemaphore函数的第三个参数会返回之前的数量。
zhxianbin 2014-03-25
  • 打赏
  • 举报
回复
sem_getvalue() places the current value of the semaphore pointed to sem into the integer pointed to by sval. If one or more processes or threads are blocked waiting to lock the semaphore with sem_wait(3), POSIX.1-2001 permits two possibili‐ ties for the value returned in sval: either 0 is returned; or a negative number whose absolute value is the count of the number of processes and threads currently blocked in sem_wait(3). Linux adopts the former behavior. 这是 Linux 的,windows 不知道
lm_whales 2014-03-25
  • 打赏
  • 举报
回复
没有,或者不准确, 至少,Windows中,不能准确的知道,信号量拥有的当前资源数。 Rease有个参数,可以大概地知道,但是毫无疑问,不是很准确的; 因为多线程里,一般不是一个地方,在修改当前资源计数。 如果非要准确知道,别用信号量,或者再另外加锁。 亦可以,联合使用信号量和资源计数机制(用其他锁)

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧