有什么方法可以让我知道等待特定信号量的进程或线程的数量吗? 就像一个 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/