关于WaitForMultipleObjects的一个有关问题,不等待直接向下执行

关于WaitForMultipleObjects的一个问题,不等待直接向下执行?
原程序是这样的:

HANDLE g_ahThreadExitEvent[3];

for   (i   =   0;   i   <   3;   i++)
{
g_ahThreadExitEvent[i]   =   CreateEvent(NULL,   TRUE,   FALSE,   NULL);
}

l_iReturn   =   ::WaitForMultipleObjects(1,   &g_ahThreadExitEvent[0],   TRUE,   INFINITE);

for   (i   =   0;   i   <   2;   i++)
{
::ResetEvent(g_ahThreadExitEvent[i]);
}

在一个线程结束的时候:

::SetEvent(g_ahThreadExitEvent[0]);

问题是,线程还没有去SetEvent,
WaitForMultipleObjects就已经返回了.
可是,如果我不用数组的话,又没有这个问题.




------解决方案--------------------
WaitForMultipleObjects退出之后的返回值是什么?
------解决方案--------------------
WaitForMultipleObjects函数的第一个参数应该是sizeof(g_ahThreadExitEvent)
在多线程处理的时候,你要清楚你要等待一个线程的事件完成,还是等待所有线程事件的完成。
上面的WaitForMultipleObjects(1, &g_ahThreadExitEvent[0], TRUE, INFINITE);的意思是等待g_ahThreadExitEvent[0]事件的信号