WaitForSingleObject отсутствует некоторые SetEvent между двумя процессами

Я реализую RPC в Windows. используя CreateFileMapping и MapViewOfFile для буфера сообщений.

и для синхронизации я использую

m_SendEvent = CreateEvent(NULL, FALSE, FALSE, TEXT(sendEventID.c_str()));
m_WaitForEvent = CreateEvent(NULL, FALSE, FALSE, TEXT(waitEventID.c_str()));

во время отладки поток выглядит хорошо, но когда я пытаюсь работать нормально, он зависает на WaitForSingleObject(m_WaitForEvent,INFINITE);для обоих процессов. Кажется, в ожидании отсутствует сигнал.

Есть ли способ, которым мы можем убедиться, что он не пропустит это. Есть ли другой способ синхронизации между процессом

Ниже приведен пример кода для создания события

m_SendEvent = CreateEvent(NULL, FALSE, FALSE, TEXT(sendEventID.c_str()));
ResetEvent(m_SendEvent);
m_WaitForEvent = CreateEvent(NULL, FALSE, FALSE, TEXT(waitEventID.c_str()));
ResetEvent(m_WaitForEvent);

Ниже приведен пример кода для отправки буфера

SetEvent(m_SendEvent);
WaitForSingleObject(m_WaitForEvent,INFINITE);
CopyMemory((PVOID)m_pBuf, pBuf, size);
SetEvent(m_SendEvent);

Ниже приведен пример кода для восстановления буфера

WaitForSingleObject(m_WaitForEvent,INFINITE);
SetEvent(m_SendEvent);
WaitForSingleObject(m_WaitForEvent,INFINITE);
CopyMemory((PVOID)pBuf, m_pBuf, size);

0 ответов

Другие вопросы по тегам