可能重复:
Interprocess semaphores sometimes not working as expected
在我的应用程序中,我注意到 sem_t 类型的信号量有时会从0变为1而不执行 sem_post 。怎么会?是什么导致这个?信号量用于进程间通信,您可以查看代码here。
答案 0 :(得分:2)
您要链接的代码不会捕获sem_t
调用的返回值。如果您查看手册,您会发现sem_wait
可能会过早地返回,即所谓的虚假唤醒。
请务必检查这些功能的返回代码。如果返回-1
,请检查errno
以查找相应的错误,并确定它是否是暂时性错误。如果是这样,请迭代。