4

我有一个类Class,其中有一个线程的成员属性HANDLE handle(我们可以假设它当时设置为NULL)。在某些时候,内部的一个方法Class调度它自己的方法之一Class::threaded()(使用另一个类本身外部的函数,但在这里并不重要)CreateThread()。然后,调用线程可能会继续执行Class.

正如CloseHandle()必须为HANDLE返回的 from调用的那样CreateThread() ,我想知道Class::threaded()在它返回之前调用它是否是一个不错的解决方案。

4

3 回答 3

12

处理线程的两种基本方法。通常您对线程终止时感兴趣,您需要保留句柄以便找出答案。当然,您会在检测到终止后将其关闭。或者你不关心,即发即弃的风格,或者有额外的同步对象来表示线程函数完成和/或你要求它退出。在这种情况下,您只需在启动后立即关闭手柄。

请记住,没有必要保持打开句柄来保持线程运行,以防这是造成混乱的根源。

于 2013-11-27T22:38:42.073 回答
5

您收到线程的句柄,以便您可以管理它。如果不需要,您可以立即致电CloseHandle

关闭HANDLE将不会终止线程,因此,如果您对线程中的任何内容都没有兴趣,则关闭它是安全的。

于 2013-11-27T22:26:16.713 回答
4

您可以在使用完后立即关闭它。关闭它对线程没有影响。(句柄由操作系统引用计数。)

于 2013-11-27T22:32:07.633 回答