当使用事件(使用::CreateEvent(...)
创建)来通知线程退出时,是否有必要在退出线程或关闭事件句柄之前重置该事件(::ResetEvent(...)
){{{ 1}})?或者,如果线程有可能重新启动,这是一个好习惯吗?这适用于Windows环境。感谢。
答案 0 :(得分:3)
没有必要调用重置事件,因为当你关闭句柄时,与之关联的事件将不再有效。
答案 1 :(得分:2)
这取决于您使用的事件的语义。
如果您使用该事件触发多个线程死亡,那么您不应该在每个线程中重置该事件。如果你用它来触发只有一个线程死掉,那么它又取决于进一步的语义。如果事件用于向其他线程发出其他信号,则需要在dieing线程中重置事件。否则,如果事件仅用于表示单个线程死亡,而不是其他任何事件,那么您可以重置事件。由于事件被发出信号,其他任何东西都不会被唤醒。
您不必重置事件以防止资源泄漏。您所要做的就是CloseHandle()
答案 2 :(得分:0)
在关闭其句柄之前,无需翻转事件的设置状态。 为了进一步解释,事件的设定状态与其存在无关。您可能知道,CreateEvent(...)函数允许您设置事件的初始状态。所以如果你把它初始化为set,你应该确定它在CloseHandle()之前设置吗?当然不是,设定状态完全无关紧要。它类似于在破坏之前将类的成员重置为其起始状态。