跨线程使用事件句柄-C ++

| 我有一个应用程序,其中我在多个线程之间共享事件句柄。这些事件句柄用于向应用程序发送串行I / O的完整发送消息和接收到的数据通知。将句柄作为类构造函数的传递参数或对“ 0”的调用复制到新线程中。我以为这是可行的,但是我遇到了一个奇怪的错误,似乎这些事件可能没有得到正确的信号。我是否应该为此使用
DuplicateHandle
函数?如果是这样,以下用法是否正确?
::DuplicateHandle(
    ::GetCurrentProcessId(),
    hMyHandle,
    ::GetProcessIdOfThread( hReceivingThreadHandle ),
    &hMyDupHandle,
    0,
    TRUE,
    DUPLICATE_SAME_ACCESS
    );
不幸的是,我无法百分百确定此错误,因为多线程调试非常棘手。谢谢。
已邀请:
如果所有使用现有句柄的线程都在同一进程中,则不必使用该API(DuplicateHandle)。同一进程中的线程可以为事件,信号量等使用相同的句柄值。
您可以在进程中的不同线程之间共享事件句柄。您的错误位于其他位置。

要回复问题请先登录注册