我正在运行helgrind来检查程序中的数据竞赛。 Helgrind报告了222个错误,所有错误均为:
if (keyPress) {
/* Do your stuff. */
keyPress = 0;
}
我在Google上找不到与此错误消息有关的任何内容。在valgrind源代码中,这似乎起源于此:
Thread #21: Bug in libpthread: pthread_cond_wait succeeded without prior pthread_cond_post
但是,我不敢相信我在大约一秒钟内收到了222次虚假唤醒。
这可能是什么原因?
在共享内存中有两个条件变量。错误似乎总是发生在其中一个而不是另一个上。