c++ - 调用 SetEvent 后调用 CloseHandle

标签 c++ multithreading winapi mfc

我的应用程序中有一个线程正在运行。在线程内,我正在等待自动重置事件退出。我想确保在使用后关闭事件句柄。我有两个选择。

  1. 调用SetEvent后立即调用事件的CloseHandle
  2. WaitForSingleObject 行之后调用 CloseHandle

请建议我哪种方法是正确的。

最佳答案

当所有线程都使用完后关闭句柄。在 WaitForSingleObject 听起来对我来说很合理(因为如果成功,SetEvent 必须已经完成)。

或者 - 为每个线程提供自己的句柄拷贝(例如通过 DuplicateHandle)并让每个线程在完成时关闭它们的拷贝。这更不容易出错,并且需要对代码进行更少的分析。

关于c++ - 调用 SetEvent 后调用 CloseHandle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6452580/

相关文章:

c++ - 从 View Controller 中调用 C++ 类会崩溃

c++ - 监控剪贴板

winapi - 无法从启动时启动的应用程序打开 COM1

java - Axis2 生成的 stub 是线程安全的吗?

c++ - Visual Studio 2012 为 XP 编译 - 无效的 win32 - v110_xp

javascript - 从我的浏览器运行 C++ 程序,发送输入并显示输出

c++ - OpenGL 黑色纹理

c++ - 我包含了必要的头文件,但得到 “error: gai_strerrorA was not declared in this scope”,ubuntu16.04,g++ 5.5

java - 使用 CachedThreadPool 写入 JTextArea

c++ - 一组线程的C++互斥锁