C++ win32计时器是否属于其调用线程?

C++ win32计时器是否属于其调用线程?,c++,windows,winapi,C++,Windows,Winapi,win32计时器(由SetTimer()创建)是否由其调用线程拥有(因此,对调用线程调用TerminateThread()将破坏计时器)?计时器属于调用SetTimer的线程。它可以选择性地与HWND(窗口句柄)关联,HWND也具有类似的线程关联性 如果线程退出或被终止,则该线程上的所有计时器都将随之终止,而不管是否调用了KillTimer。当所属线程死亡时,不再有消息泵来分派那些WM_计时器消息 如果计时器与HWND关联,则当HWND被销毁时,计时器也被隐式销毁 考虑到所有这些,显式调用Kil

win32计时器(由
SetTimer()
创建)是否由其调用线程拥有(因此,对调用线程调用
TerminateThread()
将破坏计时器)?

计时器属于调用
SetTimer
的线程。它可以选择性地与HWND(窗口句柄)关联,HWND也具有类似的线程关联性

如果线程退出或被终止,则该线程上的所有计时器都将随之终止,而不管是否调用了
KillTimer
。当所属线程死亡时,不再有消息泵来分派那些WM_计时器消息

如果计时器与HWND关联,则当HWND被销毁时,计时器也被隐式销毁


考虑到所有这些,显式调用
KillTimer
是一个好主意,这样可以隐式清理计时器对象。

计时器属于调用
SetTimer
的线程。它可以选择性地与HWND(窗口句柄)关联,HWND也具有类似的线程关联性

如果线程退出或被终止,则该线程上的所有计时器都将随之终止,而不管是否调用了
KillTimer
。当所属线程死亡时,不再有消息泵来分派那些WM_计时器消息

如果计时器与HWND关联,则当HWND被销毁时,计时器也被隐式销毁


考虑到所有这些,显式调用
KillTimer
是一个好主意,这样可以隐式清理计时器对象。

是的,计时器由创建它们的线程“拥有”。请注意。。。你不应该试图“从外部”杀死一个线程,你通常只需要设置一个标志,让线程定期检查是否有退出请求,然后“自愿”退出线程。来自外部的杀戮是许多问题的根源,除非作为最后手段,并且在非常可控的情况下,否则永远不应该使用。否则,您将面临各种泄漏的风险。是的,计时器是由创建它们的线程“拥有”的。作为一个小提示。。。你不应该试图“从外部”杀死一个线程,你通常只需要设置一个标志,让线程定期检查是否有退出请求,然后“自愿”退出线程。从外部杀戮是许多问题的根源,除非作为最后手段,并且在非常可控的情况下,否则绝对不应使用。否则,您会面临各种泄漏的风险。@Swift FridayPie没有消息泵的线程不能使用计时器(反正不是这种计时器)@Swift FridayPie没有消息泵的线程不能使用计时器(无论如何,不是这种计时器)