WaitForMultipleObjects函数有点不听话了,谁遇到过没有?
如题,我的目的很简单,就是想测试一下这个函数是不是有问题;
创建多个线程,使用一个线程函数,对一个全局数据操作,打印后再加1,源代码如下:
/*得到一个文件目录下的所有目录并打印出来*/
#include "windows.h"
#include "iostream.h"
#include "stdio.h"
DWORD dwThreadid[32];//线程ID
HANDLE hThread[32];//线程句柄
HANDLE hDirEvent=NULL;//事件句柄
int count=0;//记录个数,打印的就是这个数据
DWORD WINAPI ThreadFun(LPVOID lpParameter);//线程函数
void main()
{
hDirEvent=CreateEvent(NULL,FALSE,TRUE,NULL);
for(int i=0;i<32;i++)
CreateThread(NULL,0,ThreadFun,NULL,0,&dwThreadid[i]);
WaitForMultipleObjects(32,hThread,TRUE,INFINITE);
//getchar();
cout<<"主线程要退出!"<<endl;
CloseHandle(hDirEvent);
for(int j=0;j<32;++j)
CloseHandle(hThread[j]);
}
DWORD WINAPI ThreadFun(LPVOID lpParameter)
{
WaitForSingleObject(hDirEvent,INFINITE);
printf("线程:%d\n",count);
count++;
SetEvent(hDirEvent);
return 0;
}