请教大家一些关于线程的问题,请多指导,谢谢HANDLE handle = CreateThread(threadFunc);
uint threadFunc(LPVOID)
{
..........
handle = NULL;??????????????
这两个是不是等价的
ExitThread(0);
retun 0;
}另关闭线程有几种方法
TermianteThread可以::CloseHandle();在什么时候用
threadFunc里面,或正常结束时需要用吗,谢谢

解决方案 »

  1.   

    Window系统在创建线程如果成功了返回一个句柄,创建者可以通过句柄来控制线程,当线程结束时要通过CloseHandle来关闭句柄。
    关闭线程的方法:
    1)当线程函数返回后线程自动终止
    2)在线程中通过ExitThread来终止线程。
    3)在线程外部通过TermianteThread来强制终止线程,不推荐使用此方法,这么做不能保证线程中操作得完整性。
      

  2.   

    这两个是不是等价的 
    ExitThread(0); 
    retun 0; 
    ======================
    有一定的区别,ExitThread(0)中的0并不是线程函数的返回值,而退出码,用GetExitCodeThread可以获得。return 0中的0是线程函数的返回值。另关闭线程有几种方法 
    ===============
    线程其实正常情况不用特殊方法关闭,这个线程函数结束了,线程也就关闭了。CloseHandle的作用是关闭一个句柄,这个最好用在启动线程的函数里面。另外关闭线程句柄和关闭线程是两事回,关闭了线程句柄也不会对线程造成影响
      

  3.   

    关于CloseHandle强调一点,在你用CreateThread之后,马上就可以用CloseHandle(handle),而且大多数程序也就是这样用的,怕放在后面忘记了。关闭了句柄并不会对线程产生什么影响。
      

  4.   

    线程的终止最好是由它自己自动终止,不建议用ExitThread和TermianteThread来强制终止。