c - 查找 POSIX 信号量上阻塞的任务数

标签 c linux posix ipc semaphore

有什么方法可以让我知道等待特定信号量的进程或线程的数量吗? 就像一个 API 来检查值。 Sem_getvalue() 只返回 0,而不是负数,负数的绝对值是信号量上阻塞的任务数,如一些网站上提到的。

任何帮助都会很棒。

提前致谢!!

最佳答案

我真的不喜欢 POSIX 信号量。它们缺乏 SYS V 信号量提供的许多功能。

如果您使用SYS V信号量,您可以使用semctl函数获取各种信息:

int semctl(int semid, int semnum, int cmd, ...);

例如,要获取等待定义的信号量变为零的已处理数量:

int cnt = semtcl(my_semid, 0, GETZCNT);

就这么简单!

SYS V 信号量万岁!

关于c - 查找 POSIX 信号量上阻塞的任务数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17844348/

相关文章:

c - 在汇编中添加 float /双数

c - 断言失败

linux - Linux 中的复制/粘贴存储

linux - 如何使用 scp 将文件复制到我的服务器

c - 如果我只有设备缓冲区 (PCIe) 的物理地址,我该如何将此缓冲区映射到用户空间?

c - 丝网打印令人困惑?

c - C 程序在请求第二个输入后崩溃

c - 将带有参数的函数传递给信号处理程序?

linux - 通过 git 推送文件后如何在 Openshift 服务器上使文件可执行

c - 当 pthread_attr_t 不为 NULL 时?