调用SetEvent后调用CloseHandle

Jee*_*eva 5 c++ winapi mfc multithreading

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

  1. 调用CloseHandle后立即调用事件SetEvent
  2. 拨打电话CloseHandleWaitForSingleObject

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

Ala*_*kes 6

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

或者-给每个线程自己的句柄副本(例如通过DuplicateHandle),并在完成后关闭每个副本。这更容易出错,并且需要更少的代码分析。


Aja*_*jay 2

CloseHandle之后打电话SetEvent对我来说没有意义。CloseHandle您应该(如果需要)仅在之后致电WaitForSingleObject