在消息到应用程序之间重复WaitForSingleObject

时间:2012-07-22 21:38:14

标签: c++ multithreading messages waitforsingleobject

我在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);

有什么问题? 感谢

1 个答案:

答案 0 :(得分:0)

为什么要为此使用活动?使用信号量 - CreateSemaphore()API。

即使对此信号使用(不适当的)事件,我也不希望连续循环作为一个生产者,一个消费者和一个自动重置事件的症状 - 发布您的代码。