跨线程使用事件句柄- c++
Using Event Handles Across Threads - C++
我有一个应用程序,其中我跨线程共享事件句柄。这些事件句柄用于向应用程序发送发送完成和接收串行I/O的数据通知。句柄作为类构造函数或CreatThread
调用的传递参数复制到新线程中。我以为这是工作,但我遇到了一个奇怪的错误,似乎这些事件可能没有得到适当的信号。我应该使用DuplicateHandle
函数吗?如果是这样,下面的用法是否正确?
::DuplicateHandle(
::GetCurrentProcessId(),
hMyHandle,
::GetProcessIdOfThread( hReceivingThreadHandle ),
&hMyDupHandle,
0,
TRUE,
DUPLICATE_SAME_ACCESS
);
不幸的是,我不能100%确定这个bug,因为多线程调试是棘手的。谢谢。
如果使用现有句柄的所有线程都在同一进程中,则不应该使用该API (DuplicateHandle)。同一进程中的线程可以对事件、信号量等使用相同的句柄值。
您可以在进程中的不同线程之间共享事件句柄。
相关文章:
- 外壳包装器句柄/执行交互式命令管道C++ UNIX
- 如何获取边缘窗口句柄 (HWND)?
- 枚举进程模块在有效句柄上返回无效句柄
- 在 c/c++ 中打开 PhysicalDrive 的句柄并写入 MBR 的 linux 等效是什么?
- 从运行服务的应用程序代码中提取窗口句柄
- 在读取文件后重置句柄
- 是否有像地图这样的C++结构,但我得到的不是值的键,而是值的句柄?
- Microsoft ODBC 无法创建有效的句柄
- 我是否可以使用 win32 句柄以编程方式记录发送到/接收到 USB/COM 的内容
- 获取特定进程的句柄数
- C++ 创建 NdisProt 驱动程序的句柄
- 是否需要关闭来自 WinHTTP 异步的句柄?
- 句柄OK全部崩溃
- 我需要通过窗口句柄(HWND)获取文件,我该怎么办?
- 什么是 C# 等同于C++句柄
- 未知C++错误:致命错误:glibc检测到无效的stdio句柄
- 获取现有进程句柄
- GetModuleHandle() 无法检索由 "notepad.exe" 加载的"advapi32.dll"的句柄
- 更正GLSL无绑定纹理句柄中的结构布局
- 带有资源句柄的TensorFlow自定义C++操作