我必须CloseHandle()在线程句柄?

_beginthreadex返回一个线程的句柄

m_hStreamStatsThread = (HANDLE) _beginthreadex( NULL, 0, StreamStatsThread, this, 0, NULL ); 

例如,如果您需要引用像TerminateThread(..)这样的调用中的线程,则可以使用此句柄。

根据_beginthreadex上的MSDN页面 ,_beginthreadex不会总是返回一个有效的句柄 – 例如错误时也可能返回-1L

当线程正常完成时,我必须在线程句柄上调用CloseHandle,还是只能将其值设置为NULL / INVALID_HANDLE_VALUE?

Solutions Collecting From Web of "我必须CloseHandle()在线程句柄?"

同意Nemanja Trifunovic。

即使线程退出后 – 它的句柄是有效的。 你可以例如查询它的返回值。

作为一般规则:除非另有说明,否则每个Win32句柄都必须由CloseHandle关闭。

MSDN页面上您发布链接的代码示例包括对CloseHandle()的调用。 将句柄的值设置为NULL不会减少内核对象的内部引用计数,反正几乎没有用处。