2009-01-07 56 views
11

我想创建一个线程,然后立即调用CloseHandle并让线程自己死掉,这样我就不必在'原始'线程中做额外的清理工作了(不是那种清理很难本身,但这意味着我希望避免额外的簿记费用)。在线程终止之前调用CloseHandle()是否合理?

MSDN说在一个线程上调用CloseHandle()不会终止该线程,但我不清楚这是否意味着我真的可以做到这一点。

回答

20

不仅是合理的,而且它不是一个手柄泄漏。通常我会在创建线程后立即关闭它,除非我在别处需要它。

+0

+1,这样你在使用AppVerifier时不会误报。 – 2009-01-07 00:30:40

11

CreateThread函数使引用计数为+2,CloseHandle仅使引用计数为-1,当线程函数完成时,系统将引用计数为-1。