c - 信号量意外设置

标签 c linux gcc x86 semaphore

Possible Duplicate:
Interprocess semaphores sometimes not working as expected

在我的应用程序中,我注意到 sem_t 类型的信号量有时会在不执行 sem_post 的情况下从 0 变为 1。怎么会?什么会导致这种情况?信号量用于进程间通信,可以看代码here .

最佳答案

您链接到的代码不会捕获 sem_t 调用的返回值。如果您查看手册,您会发现 sem_wait 可能会过早返回,即所谓的虚假唤醒。

始终检查这些函数的返回码。如果返回-1,请检查errno是否有相应的错误,并确定是否是暂时性错误。如果是这样,请迭代。

关于c - 信号量意外设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8580358/

相关文章:

c - 在链表中输入元素时进行迭代

c - 在 C 中用 2 个字符包围一个字符串

python - 在Docker上安装detectron2软件包

linux - 不使用 SVN 时会发生什么?

c++ - 使用模数不同的值时的速度差异

c++ - 非法指令(核心转储)HElib

c中二维数组中整数的连续间隔输入

c - C 中的显式类型转换

linux - 如何在 GDB 中使用 shell 命令的输出作为 GDB 命令的参数?

gcc - 使用 flto 的要求