我有一个类Class
,其中有一个成员属性HANDLE handle
到一个线程(我们可以假设它在那时被设置为NULL
)。在某些时候,Class
中的一个方法使用Class::threaded()
调度其中一个方法CreateThread()
(使用另一个类本身外部的函数,但这并不重要) 。然后,调用线程可以继续Class
之外的其他功能。
必须为从CloseHandle()
返回的HANDLE
调用CreateThread()
,我想知道在它返回之前从Class::threaded()
调用它是否是一个不错的解决方案。< / p>
答案 0 :(得分:13)
处理线程的两种基本方法。通常,当线程终止时你会感兴趣,你需要保持手柄,这样你才能找到答案。当然,在您检测到终止后,您将关闭它。或者你不关心,发送火箭,或者有其他同步对象来表示线程功能已完成和/或你要求它退出。在这种情况下,您只需在启动时立即关闭手柄。
请记住,保持句柄打开以保持线程运行是必要的不,以防这是混淆的来源。
答案 1 :(得分:5)
您收到线程的句柄,以便您可以管理它。如果没有必要,您可以立即致电CloseHandle
。
关闭HANDLE
将无法终止该线程,因此,如果您对该线程中没有任何内容感兴趣,那么关闭它是安全的。
答案 2 :(得分:4)
您可以在使用它后立即将其关闭。关闭它对线程没有影响。 (句柄由OS计算引用。)