【笔记】多个线程的正常结束
本帖最后由 2016wapjpc 于 2017-7-21 13:55 编辑当我们在主线程中写下了子线程,子线程是正常结束,还是人为终止,就要求用 WaitForsingleObject( hHandle,-1)来判断,
是阻塞,还是向下走
当有多个 子线程时,我们是要全部结束后干事情,还 是一个结束后就可以做其它事情,都要判断
[
DWORD WINAPI THreadProc(
LPVOID lpParameter )
{
for(int i = 0;i<10;i++)
{
Sleep(1000);
printf("--------------\n");
}
return 0;
}
DWORD WINAPI THreadProc2(
LPVOID lpParameter )
{
for(int i = 0;i<5;i++)
{
Sleep(1000);
printf("++++++++++++++++++++\n");
}
return 0;
}
int main(int argc, char* argv[])
{
HANDLE hHandleArr;
hHandleArr = ::CreateThread(NULL,0,THreadProc,0,0,NULL);
hHandleArr = ::CreateThread(NULL,0,THreadProc2,0,0,NULL);
DWORD dwCode2 =::WaitForMultipleObjects(2, hHandleArr,TRUE,-1);//等待多个线程结束
TCHAR szBuffer2;
memset(szBuffer2,0,10);
sprintf(szBuffer2,"%x",dwCode2);
MessageBox(0,szBuffer2,"线程阻塞2,正常退出",0);
//当两个线程都结束了,就关闭线程
CloseHandle(hHandleArr);
CloseHandle(hHandleArr);
//在WaitForMultipleObjects(2, hHandleArr,FALSE,-1); 当返回值是0时,表示第一个线程是已通知,当返回值是1时,表示第2个线程是已通知,也就是结束。
//在WaitForMultipleObjects(2, hHandleArr,TRUE,-1); 当返回值是0时,表示两个线程都是已通知,两个线程都结束了。
return 0;
}
] 新手,还在学习中 main控制台程序
然后 ::CreateThread......
页:
[1]