在_beginthreadex()成功后我可以立即调用CloseHandle()吗?

时间:2011-11-23 11:51:15

标签: c++ windows multithreading visual-c++ beginthreadex

我对使用_beginthreadex()返回的句柄不感兴趣。立即致电CloseHandle()是否安全?

我认为必须这样做以避免内存泄漏。

2 个答案:

答案 0 :(得分:10)

是的,您可以在决定不再需要该手柄时立即关闭手柄。这不会影响线程执行。但是,您可能应该在继续之前检查线程是否已经启动。

您关注的漏洞不是内存泄漏,它们是系统资源泄漏 - 通常它们更糟糕。

答案 1 :(得分:-1)

根据MSDN,您不应该关闭__beginThreadEx返回的句柄: _endthread会自动关闭线程句柄(而_endthreadex则不会)。因此,在使用_beginthread和_endthread时,不要通过调用Win32 CloseHandle API显式关闭线程句柄。 (有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/kdzttdcb(ar-sa).aspx。)