我在C(生产者和消费者)中创建了两个程序,它们将消息发送给彼此 (使用CreateEvent,SetEvent和WaitForSingleObject)
我为每个程序实现一个线程来管理这些消息 使用等待消息的WaitForSingleObject(myEvent,INFINITE)
我将WaitForSingleObject放在循环中以重复并及时获取许多消息。
这在第一次工作正常,但是其他时候WaitForSingleObject不等待消息而左边的代码在不定式循环中运行(包括WaitForSingleObject)
我测试了删除两个程序的CloseHandle(myEvent)但没有结果
do {
//wait until the event received from another process
WaitForSingleObject(myrcvEvent, INFINITE);
//send the feeback event, if it is failed show a message
printf ("consumer: try to send the feedback event\n");
if (!SetEvent(myfeedbackEvent)) {
msgbox("consumer: Set feedbackEvent failed!");
return;
} else {
InvalidateRect(hWnd,NULL,TRUE); //redraw with new values
}
//CloseHandle(myrcvEvent);
//CloseHandle(myfeedbackEvent);
Sleep(100);
} while(1);
有什么问题? 感谢
答案 0 :(得分:0)
为什么要为此使用活动?使用信号量 - CreateSemaphore()API。
即使对此信号使用(不适当的)事件,我也不希望连续循环作为一个生产者,一个消费者和一个自动重置事件的症状 - 发布您的代码。