困惑很久的问题:
问题1:
     主线程,次线程区别,示例!
问题2:
     当关闭窗口时,或停止正在运行的线程?如何正确去终止线程?有无可能导致界面崩溃?
问题3:
      线程运行完成后,是否自动结束?如:
     RecvThreadProc(LPVOID lpParam)
    {
     int i;
     i ++;
     return ;}执行结束后,线程就结束了?
最后问:
      如何判别线程是否还在运行???与否是否结束?

解决方案 »

  1.   

    线程中如果有循环过程, 注意检测一个条件变量. 比如一个BOOL型的全局变量.如果系统退出, 设置这个全局变量(这样线程中的循环就会中断了)
    主线程稍等(或用WaitForSingleObject判断其它线程已经退出), 然后退出.
      

  2.   

    主线程创建子线程,没什么不一样,除非你用CreateProcess建立进程当作主线程
      

  3.   

    不是高手:)
    主线程是main的入口,而由他创建的其他线程和main没什么区别,该函数完成后和main一样会自动结束,WIN32下,如果在未完成前程序结束,系统调用TerminateThread强制结束,不会导致界面崩溃.希望有用~~
      

  4.   

    谈自己的的想法
    问题1:
         每个程序(进程)在被shell加载时,会自动创建一个线程(线程才是CPU调度的单位),这就是常说的主线程。由主线程创建的其他线程为次线程
    问题2:
        当关闭窗口时,或停止正在运行的线程?如何正确去终止线程?有无可能导致界面崩溃?
        当关闭窗口时,如果线程正在运行,有可能导致界面崩溃。结束方法同意neosu的办法。
    问题3:
        执行结束后,线程就结束了?
        执行结束,线程就自动结束
      

  5.   

    当然,这是在Windows下,在Linux下没线程和进程的区别。
      

  6.   

    困惑之四:
    m_hThread = CreateThread();
    当此线程未结束时再创建时m_hThread = CreateThread();会出现问题么?必须关闭上一线程?
    m_hThread又有何用?句柄是什么?作用是??实质是?