在mfc中一个线程如何等待所有的线程结束?例如 我用for循环创建了100个线程A,然后我创建1个线程B,然后线程B需要等待所有的线程A执行完毕之后,线程B才开始执行。 for (int i=0;i<100;i++)
{ CWinThread *pA=AfxBeginThread(函数A); pA->ResumeThread();
} CWinThread *pB=AfxBeginThread(函数B);
pB->ResumeThread();
类似这样代码。请指教
{ CWinThread *pA=AfxBeginThread(函数A); pA->ResumeThread();
} CWinThread *pB=AfxBeginThread(函数B);
pB->ResumeThread();
类似这样代码。请指教
解决方案 »
- 请高手帮忙,VC++编译DLL,有没有参数和返回值都是字符串的实例
- 请问大家一般都是在哪下载源码实例学习哦
- 一道字符编码转换的面试题。。。很难的
- 各位大侠们,在用MFC的时候,我想在dlg类里的按钮响应函数中访问view类里的一个成员变量,怎么访问??
- 关于文件关联的问题
- 滚动条,combox,slider, check box自画如何实现,
- CString::Format()的参数是什么?
- 哪有 Objective Grid for MFC 下载?
- 一个关于串行化(Serialize)的问题?急急急!
- MFC要过时了?郁闷!!!!!!!!!!!!!
- 如何获取文件路径及创建多级路径
- 注册表被病毒实时更改怎么办?
DWORD WaitForMultipleObjects(
DWORD nCount,
const HANDLE* lpHandles,
BOOL bWaitAll,
DWORD dwMilliseconds
);
函数用法,
让所有A现成HANDLE保存在一个数组中HANDLE handle[100];
handle[...] = CThread.m_hThread;
B里面
WaitForMultipleObjects(100, handle, TRUE, INFINITE);
然后返回值为WAIT_OBJECT_0时为所有A执行完成..
while(true)
{
if(IsAllThreadFinished())//检查所有的A线程是否结束
break;
Sleep(100);
}
.........
.........
//线程B的其他语句
while(1)
{
if ( WaitForMultipleObjects(50, handle1, TRUE, 0)==WAIT_OBJECT_0 && WaitForMultipleObjects(50, handle2, TRUE, 0)==WAIT_OBJECT_0 )
continue;}