[英]Thread Exit Events - C++
当使用事件(由::CreateEvent(...)
创建)来通知线程退出时,是否有必要在退出线程或关闭事件句柄之前重置该事件( ::ResetEvent(...)
) ( ::CloseHandle(...)
)? 或者,是否有可能重新启动线程,这是一种好习惯吗? 这适用于Windows环境。 谢谢。
不必调用reset事件,因为当您关闭句柄时,与此相关的事件将不再有效。
这取决于您使用的事件的语义。
如果使用事件触发多个线程死亡,则不应在每个线程中重置事件。 如果使用它仅触发一个线程死亡,那么它又取决于进一步的语义。 如果该事件用于向其他线程发送其他消息,则需要在死线程中重置该事件。 否则,如果该事件仅用于指示单个线程死亡而没有其他信号,则可以重置该事件或不重置该事件。 没有其他事件会因发出事件信号而唤醒。
您不必重置事件即可防止资源泄漏。 所有您需要做的就是CloseHandle()
在关闭事件的句柄之前,无需翻转事件的设置状态。 为了进一步说明,事件的设置状态与其存在无关。 如您所知,CreateEvent(...)函数使您可以设置事件的初始状态。 因此,如果按设置初始化它,是否应该确定在CloseHandle()之前设置它? 当然不是,设置状态是完全无关紧要的。 类似于在破坏类之前将类的成员重置为其开始状态。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.