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;
}
我的
{
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;
}
我的
timeout==0?试试1, 或在适当的时间Sleep一下。。
{WaitForSingleObject(pClient->m_hShutdownEvent,0);
}
AfxEndThread(0);return 0;
}
要么 WaitForSingleObject(pClient->m_hShutdownEvent,0); Sleep(500);
你这样WaitForSingleObject(pClient->m_hShutdownEvent,0);肯定100%
一个读线程,一个写线程,一个接收线程从网络上接收远程车载GPS传回的数据,并将数据发知道一个大数组中,一个读取线程从数组中读取数据并处理分析,我希望反应速度快些,还有其他的处理线程,大约有四个线程,该程序已跑起来,我的计算机就操作起来很费力。
线程体内部写个sleep(20)
看下MSDN里第二个参数的使用.
{
if(WaitForSingleObject(pClient->m_hShutdownEvent,0)==WAIT_OBJECT_0)
break;
}
不能为WaitForSingleObject第二个参数传递0,传递0函数总是立即返回。
可以设定一个你可以接受的等待值。
_____________________
-1即INFINITE,即无限时等待。
第二个参数为0是立即返回,上面的循环变成了忙等待.把0改成其它的,比如200,等200毫秒