怎么样才能使线程正常退出?高手请指点! 子线程的handle在主线程里WaitForSingleObject(handle,INIFLE); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 WaitForSingleObjct把子线程的ID作为参数 pos=m_ptrlstThreadScheduled.GetHeadPosition(); while(pos){ pMultiThread=m_ptrlstThreadScheduled.GetNext(pos); delete pMultiThread; } m_ptrlstThreadScheduled.RemoveAll(); ////notify kill to running threads pos=m_ptrlstThreadRunning.GetHeadPosition(); while(pos){ pMultiThread=m_ptrlstThreadRunning.GetNext(pos); VERIFY(pMultiThread->m_eventKill.SetEvent()); } //wait for running threads to finish for (int nThreadsLeft = m_ptrlstThreadRunning.GetCount(); nThreadsLeft != 0; ){ WaitForSingleObject(CMultiThread::m_eventAnotherDead, INFINITE); Sleep(nThreadsLeft*2);// 200ms for every 100 threads nThreadsLeft = 0; pos=m_ptrlstThreadRunning.GetHeadPosition(); while(pos){ pMultiThread=m_ptrlstThreadRunning.GetNext(pos); if (!pMultiThread->IsDead()) ++nThreadsLeft; } } // delete all running thread objects while (!m_ptrlstThreadRunning.IsEmpty()) { pMultiThread= m_ptrlstThreadRunning.RemoveHead(); VERIFY(WaitForSingleObject(pMultiThread->m_hThread, INFINITE) == WAIT_OBJECT_0); delete pMultiThread; } 回复(mfcsdk())你说的这种方式我试过,有时候四锁在WaitForSingleObject(handle,INIFLE); 函数! 1:用WAITFORSINGLEOBJECT等待线程对象。2:用GETEXITCODETHREAD来轮循线程退出CODE。 求助 如何编写三维立体图 如果用RAS代码指定一个VPN在连接前先拨另一个连接? MFC对话框中内嵌Excel格 十万火急!如何实现 PropertySheet的ok按钮点击后不关闭整个Sheet窗口? 请各位高手给予指点?????? 今天开始学习VC网络编程 Thread訪問變量問題. 怎样由配置文件动态生成菜单 请问:OnTimer怎样使用?怎样放置定时器? 有问题找大虾解答... 高难度问题,高分求解!!!!!!创建一个新类!!!!!!!!!! 多线程定义问题
把子线程的ID作为参数
pos=m_ptrlstThreadScheduled.GetHeadPosition();
while(pos){
pMultiThread=m_ptrlstThreadScheduled.GetNext(pos);
delete pMultiThread;
}
m_ptrlstThreadScheduled.RemoveAll();
////notify kill to running threads
pos=m_ptrlstThreadRunning.GetHeadPosition();
while(pos){
pMultiThread=m_ptrlstThreadRunning.GetNext(pos);
VERIFY(pMultiThread->m_eventKill.SetEvent());
}
//wait for running threads to finish
for (int nThreadsLeft = m_ptrlstThreadRunning.GetCount(); nThreadsLeft != 0; ){
WaitForSingleObject(CMultiThread::m_eventAnotherDead, INFINITE);
Sleep(nThreadsLeft*2);// 200ms for every 100 threads
nThreadsLeft = 0;
pos=m_ptrlstThreadRunning.GetHeadPosition();
while(pos){
pMultiThread=m_ptrlstThreadRunning.GetNext(pos);
if (!pMultiThread->IsDead())
++nThreadsLeft;
}
}
// delete all running thread objects
while (!m_ptrlstThreadRunning.IsEmpty())
{
pMultiThread= m_ptrlstThreadRunning.RemoveHead();
VERIFY(WaitForSingleObject(pMultiThread->m_hThread, INFINITE) == WAIT_OBJECT_0);
delete pMultiThread;
}
你说的这种方式我试过,有时候四锁在WaitForSingleObject(handle,INIFLE); 函数!
2:用GETEXITCODETHREAD来轮循线程退出CODE。