UINT thread(LPVOID p)
{
while (1)
{
if(WaitForSingleObject(pClient->m_hShutdownEvent,0)==WAIT_OBJECT_0)
break;
}
AfxEndThread(0);return 0;
}
创建线程
/启动线程
OnCreateThread()
{
if (!(m_hThread1 = AfxBeginThread(Thread, this)))
return FALSE;
if(!(m_hThread2 = AfxBeginThread(RecvGPRSThread,this)))
return FALSE;
return TRUE;
}
我的

解决方案 »

  1.   

    if(WaitForSingleObject(pClient->m_hShutdownEvent,0)==WAIT_OBJECT_0)
    timeout==0?试试1, 或在适当的时间Sleep一下。。
      

  2.   

    UINT thread(LPVOID p)
    {WaitForSingleObject(pClient->m_hShutdownEvent,0);
    }
    AfxEndThread(0);return 0;
    }
      

  3.   

    这个用法和你的需求有关,please tell me what you want to do.
      

  4.   

    要么 WaitForSingleObject(pClient->m_hShutdownEvent, 500);
    要么 WaitForSingleObject(pClient->m_hShutdownEvent,0); Sleep(500);
    你这样WaitForSingleObject(pClient->m_hShutdownEvent,0);肯定100%
      

  5.   

    我修改了if(WaitForSingleObject(pClient->m_hShutdownEvent,0)==WAIT_OBJECT_0)为if(WaitForSingleObject(pClient->m_hShutdownEvent,1000)==WAIT_OBJECT_0)但还是很耗资源.
    一个读线程,一个写线程,一个接收线程从网络上接收远程车载GPS传回的数据,并将数据发知道一个大数组中,一个读取线程从数组中读取数据并处理分析,我希望反应速度快些,还有其他的处理线程,大约有四个线程,该程序已跑起来,我的计算机就操作起来很费力。
      

  6.   

    WaitForSingleObject(pClient->m_hShutdownEvent,0) 这样调用总是立即超时,除非pClient->m_hShutdownEvent被激活,否则就是一个死循环,CPU能不100%吗?
      

  7.   

    没有sleep所以就死了
    线程体内部写个sleep(20)
      

  8.   

    有WaitForSingleObject何必再有Sleep.
    看下MSDN里第二个参数的使用.
      

  9.   

    WaitForSingleObject(pClient->m_hShutdownEvent,-1)
      

  10.   

    while (1)
    {
    if(WaitForSingleObject(pClient->m_hShutdownEvent,0)==WAIT_OBJECT_0)
    break;
    }
    不能为WaitForSingleObject第二个参数传递0,传递0函数总是立即返回。
    可以设定一个你可以接受的等待值。
      

  11.   

    -1?什么意思呢?
    _____________________
    -1即INFINITE,即无限时等待。
      

  12.   

    WaitForSingleObject(pClient->m_hShutdownEvent,0)
    第二个参数为0是立即返回,上面的循环变成了忙等待.把0改成其它的,比如200,等200毫秒
      

  13.   

    没有停顿的循环,当然CPU100%了