我在程序里建了几个工作线程,线程函数如下面这个样子
UINT ThreadFunc(LPVOID pThread)
{
CXXX* p = (CXXX*)pThread;
while(p->GetThreadState())
{
//some code
}
return 0;
}这里面我用GetThreadState()函数控制线程运行状态,当我想停止线程的时候,我会让GetThreadState函数返回FALSE,否则返回TRUE可是现在的问题就是,我并没有让GetThreadState函数返回FALSE,但程序运行时,这样建立的几个工作线程总是可能有自己退出的,即停止运行了。而且每次还不一定,退出时间也不一定,哪个退出也不一定。我找不到原因。请各位大侠指教
UINT ThreadFunc(LPVOID pThread)
{
CXXX* p = (CXXX*)pThread;
while(p->GetThreadState())
{
//some code
}
return 0;
}这里面我用GetThreadState()函数控制线程运行状态,当我想停止线程的时候,我会让GetThreadState函数返回FALSE,否则返回TRUE可是现在的问题就是,我并没有让GetThreadState函数返回FALSE,但程序运行时,这样建立的几个工作线程总是可能有自己退出的,即停止运行了。而且每次还不一定,退出时间也不一定,哪个退出也不一定。我找不到原因。请各位大侠指教
把代码拿出来看看
建议使用Event来进行线程同步!
CXXX* p = (CXXX*)pThread;
}
catch{
...
}
这个CXXX* p :是否正确?