我举个我写的程序的例子:bool m_start;//为一个全局变量DWORD WINAPI ThreadCtrl(LPVOID lpstart)
{
    int a=0;
    while(m_start)
    {
        a++;
        Sleep(1000);//多一秒后在运行.
    }
    if(!m_start)
        return 0;
    return 0;
}void start()//线程开始
{
    m_start=true;
    DWORD ThreadID;
    CreateThread(NULL,0,ThreadCtrl,0,0,&ThreadID);
}void end()//线程结束
{
    m_start=false;
}是不是我执行end()函数的时候线程就会自动结束啊?还是需要使用函数退出线程啊?另如何判断我的线程是否已经结束了呢?这个问题让我有点不太明白.

解决方案 »

  1.   

    CreateThread会返回新线程的handle吧,判断下...
    应该不会结束,只是停了吧,可以找个能看线程的软件试试
      

  2.   

    谢谢楼上的,通过句柄能判断吗?
    是不是用wait函数判断?哦那这样的话我的线程原来没有退出啊?那怎么结束线程呢?
      

  3.   

    当线程函数结束时,这个线程就退出了,你上面的例子中当执行end()时,线程函数退出,所以线程结束,至于判断线程是否结束一般用CreateThread的返回句柄和WaitForSingleObject结合起来,写作WaitForSingleObject(句柄,...);如果线程结束了,这个函数会停止等待。
      

  4.   

    哦   谢谢楼上的!可是我执行完end函数后,用工具查看线程,发现有的线程好似还是处于   wait   状态,这是怎么回事呢?