创建一个线程,要保证这线程一直执行,不想用死循环,怎么办呀?

解决方案 »

  1.   

    从CWinThread继承,然后用AfxBeginThread启动线程
      

  2.   

    哦???要是循环的话又太费cpu了,这个怎么弄呢?
      

  3.   

    To add sleep(0) code in your function
      

  4.   

    可以把线程函数理解为你的主线程对应的main函数,main函数执行完,程序就退出了,
    同理,你的那个线程函数执行完,那个线程就寿终正寝了。估计你的意思是,在函数里面需要不停的做某事,但是这事周期比较短,也不需要太大的频率,1、用定时器
    2、用消息驱动
      

  5.   

    extern HANDLE  hEvent ;///事件,用来通知线程是否需要工作,初始为无信号状态
    extern BOOL       bQuit; ///退出标志。
    DWORD WINAPI ThreadProc(void * p)
    {
        while(1)
    {
    //线程等待事件
         WaitForSingleObject(hEvent , INFINITE);
         if(bQuit)
              break;
    //有工作要做了
       //do something
    }
    void Quit()
    {
        bQuit = TRUE;
       SetEvent(hEvent);
      WaitForSingleObject(hThread);
      CloseHandle(hThread);
      CloseHandle(hEvent);
    }
      

  6.   

    这个里面的循环会不会占太多的CPU呀?