Cで2つのプログラム(プロデューサーとコンシューマー)を作成し、メッセージを相互に送信します(CreateEvent、SetEvent、およびWaitForSingleObjectを使用)
各プログラムに 1 つのスレッドを実装して、メッセージを待機する WaitForSingleObject(myEvent, INFINITE) を使用してこのメッセージを管理します
WaitForSingleObject をループに入れて繰り返し、時間内に多くのメッセージを取得します。
これは最初は正常に機能しますが、それ以外の場合は WaitForSingleObject がメッセージを待機せず、左のコードが無限ループで実行されます (WaitForSingleObject を再度含む)。
2 つのプログラムの両方で 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);
なにが問題ですか?ありがとう