#include <stdio.h>
#include <windows.h>
DWORD WINAPI ThreadProc( LPVOID lpParameter);
/*
如果此参数为true,函数返回时,在lphandles数组中的所有对象的状态信号。
如果FALSE,函数返回在任何一个对象的状态被设置为有信号。在后一种情况下,返回值指示其状态产生函数返回对象。
*/
int main (void)
{
HANDLE hThread[5]={0};
int rc=0;
for (BYTE i=0;i<5;i++)
{
hThread[i]=CreateThread(NULL,NULL,ThreadProc,(LPVOID)i,NULL,NULL);
printf("线程%d创建\n",i);
}
rc=WaitForMultipleObjects(5,hThread,false,INFINITE);
if (rc==WAIT_TIMEOUT)
{
printf("等待超时\n");
}
else if(rc==WAIT_FAILED)
{
printf("等待失败\n");
}
else if(rc>=WAIT_OBJECT_0 && rc< WAIT_OBJECT_0+5)
{
printf("线程%d返回\n",rc-WAIT_OBJECT_0);
}
for (BYTE i=0;i<5;i++)
{
CloseHandle(hThread[i]);
}
getchar();
return 0;
}
DWORD WINAPI ThreadProc( LPVOID lpParameter)
{
srand(GetTickCount());
Sleep(rand()%8*500+500);
printf("slot %d idle \n",lpParameter);
return true;
}
/*
2015年5月5日 21:57:50
程序执行结果如下:
线程0创建
线程1创建
线程2创建
线程3创建
线程4创建
slot 0 idle
slot 3 idle
slot 2 idle
slot 4 idle
slot 1 idle
线程0返回
请按任意键继续. . .
*/
WaitForMultipleObjects
最新推荐文章于 2020-11-24 22:41:41 发布