有没有可能存在某个线程的内核对象已撤销,但这个线程仍在运行。我的想法是这样的:
调用 CloseHandle 关闭了线程句柄,使其使用用计数为 0,只是不能访问该线程对象(并撤销了线程内核对象),但并不终止该线程。
请大神给详细解释下这个原理。

解决方案 »

  1.   

    引用一个大师的回复在线程创建后马上调用CloseHandle()是个良好的做法,这里不会影响线程的执行,就是因为即使你close了这个handle,它的内部记数也不为零. 但如果你不关,在线程结束后,那个线程对象将滞留于内存中,也就是说你有handle leak.返回这个handle给你,是让你有机会对这个线程实施外部动作,诸如waitforsingleobject之类.
      

  2.   

    首现线程内核对象的初始引用计数是2,不是1,所以调用closehandle,引用计数变1,等线程结束,再减1变0,如果引用计数为0,则OS会删除这个内核对象