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/