繁体   English   中英

线程退出事件-C ++

[英]Thread Exit Events - C++

当使用事件(由::CreateEvent(...)创建)来通知线程退出时,是否有必要在退出线程或关闭事件句柄之前重置该事件( ::ResetEvent(...) ) ( ::CloseHandle(...) )? 或者,是否有可能重新启动线程,这是一种好习惯吗? 这适用于Windows环境。 谢谢。

不必调用reset事件,因为当您关闭句柄时,与此相关的事件将不再有效。

这取决于您使用的事件的语义。

如果使用事件触发多个线程死亡,则不应在每个线程中重置事件。 如果使用它仅触发一个线程死亡,那么它又取决于进一步的语义。 如果该事件用于向其他线程发送其他消息,则需要在死线程中重置该事件。 否则,如果该事件仅用于指示单个线程死亡而没有其他信号,则可以重置该事件或不重置该事件。 没有其他事件会因发出事件信号而唤醒。

您不必重置事件即可防止资源泄漏。 所有您需要做的就是CloseHandle()

在关闭事件的句柄之前,无需翻转事件的设置状态。 为了进一步说明,事件的设置状态与其存在无关。 如您所知,CreateEvent(...)函数使您可以设置事件的初始状态。 因此,如果按设置初始化它,是否应该确定在CloseHandle()之前设置它? 当然不是,设置状态是完全无关紧要的。 类似于在破坏类之前将类的成员重置为其开始状态。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM