我目前正在围绕 pthreads 构建一个精简的 C++ 包装器以供内部使用。Windows 和 QNX 都是目标,幸运的是 pthreads-win32 端口似乎工作得很好,而 QNX 符合 POSIX 用于我们的实际目的。
现在,在实现信号量时,我点击了函数
sem_post_multiple(sem_t*, int)
这显然只在 pthreads-win32 上可用,但在 QNX 中没有。顾名思义,该函数应该通过作为第二个参数给出的计数来增加信号量。据我所知,该函数既不是 POSIX 1b 也不是 POSIX 1c 的一部分。
尽管目前对上述功能没有要求,但我仍然想知道为什么 pthreads-win32 提供该功能以及它是否有用。我可以尝试使用类似于以下内容为 QNX 模仿它:
sem_post_multiple_qnx(sem_t* sem, int count)
{
for(;count > 0; --count)
{
sem_post(sem);
}
}
我要的是关于如何进行的建议/建议。如果共识建议为 QNX 实现该功能,我也会感谢您对建议的代码剪断是否是一个可行的解决方案的评论。
提前致谢。
PS:为了清楚起见,我故意省略了我喜欢的 C++ 类。对于所有建议加强救援的人:由于管理原因,这不是我当前项目的选择。