假设我这样建立线程
m_hHandle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc, lpParameter, 0, &dwThreadID);请问该线程何时结束?
1.ThreadProc返回之时;
2.CloseHandle(m_hHandle)之后;
3.其他(请说明)。刚开始多线程的编程,请大家多多指教!

解决方案 »

  1.   

    线程的自然结束是ThreadProc函数返回时
    使用Thread
      

  2.   

    terminatethread可以强制结束线程,不论是否ThreadProc结束进程退出时,所有的附属线程强制结束
      

  3.   

    1.ThreadProc返回时,线程结束
    2.主程序运行完,线程也结束了
    3.也可以强制让一个线程提前结束
      

  4.   

    线程就是程序执行的路径,和以往单线程时候的进程有点像,可以在线程的过程函数中调用中断线程的函数,譬如上面的TerminateThread,也可以等待线程路径函数达到返回条件的时候自然返回。
      

  5.   

    楼上都对,另外
    CloseHandle(m_hHandle)不会结束线程
      

  6.   

    ThreadProc函数结束后,该线程就结束了。
      

  7.   

    另外还有一个,线程A可以从线程B通过TerminateThread终止,就像进程之间也可以通过TerminateProcess终止一样……
      

  8.   

    WaitForSingleObject(m_hHandle,INFINITE)之后
    注意此方法可能造成死锁。需要处理消息的线程应该使用MsgWaitForMultipleObject或者其他的方法在等待时处理消息
      

  9.   

    CloseHandle(m_hHandle)不会结束线程,
    他的作用仅仅是减少引用次数,当次数为0时,系统会把他结束掉