thread_one();
thread_one_1();
thread_one_2();
dosomething();thread_one();
{
 m_thread[0] = CreateThread(NULL,0,thread_one_1,...);
 m_thread[1] = CreateThread(NULL,0,thread_one_2,...);
 ...
 WaitForMultipleObjects(2,m_thread,TRUE,INFINITE);
 ...
}
dosomething()
{
   判断thread_one()是否运行
     如果运行直接关闭,修改一些参数 在创建thread_one()
     如果没有运行直接创建thread_one();
 }请问各位大仙dosomething()函数如何实现,
      1 如何监控到thread_one()是否在运行
      2 如果运行如何关闭,同时要关闭thread_one_1(); thread_one_2();二个线程。小弟分不多,各位大神指导下吧,偶结贴很快的

解决方案 »

  1.   

    1 如何监控到thread_one()是否在运行
    应该有很多方式吧,比如随便写个控制类A,声明一个静态全局bool变量hControl,在A构造函数中声明为true,析构函数中声明为false,在thread_one()函数内加入A a;,thread_one()运行时,调用a的构造函数,hControl为true,结束,调用一次析构函数为false。
      

  2.   

    可以用一个标志位 BOOL flag ;初始化为FALSE,在一进入线程的时候 把他置TRUE 结束时置为FALSE然后每次通过查看该标志位判断线程运行情况。
    关闭线程函数:if(TerminateThread(tHD,0))
    {
    tHD = INVALID_HANDLE_VALUE;
    }
    THD是线程句柄。
      

  3.   

    那么这样是否要是有3个static变量来监控三个线程啊
      

  4.   

    GetExitCodeThread()
    :Retrieves the termination status of the specified thread.
      

  5.   

    static 变量 如何初始化啊,放在那里呢?
    没初始化 直接报错啊
      

  6.   

    声明的时候啊 static bool bRunning = true