信号量意外地得到了设定

时间:2011-12-20 18:44:31

标签: c linux gcc x86 semaphore

  

可能重复:
  Interprocess semaphores sometimes not working as expected

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

1 个答案:

答案 0 :(得分:2)

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

请务必检查这些功能的返回代码。如果返回-1,请检查errno以查找相应的错误,并确定它是否是暂时性错误。如果是这样,请迭代。