1--------------------
WaitForMultipleObjects(4, pThreads, TRUE, INFINITE);  for (i =0; i < 4; i++)
  CloseHandle(pThreads[i]);
delete[] pThreads;
2---------------------
        for( i = 0 ; i < 4;i++)
{
HANDLE ha = m_arrThreadInfo[i]->ha;
WaitForSingleObject(ha,INFINITE);
CloseHandle(ha);
}
delete[] pThreads;我测试了下,WaitForSingleObject 使用了1187s 而WaitForMultipleObjects为1188s
请达人们明示 ,哪个效率高啊 运行速度快 
 

解决方案 »

  1.   

    我是觉得你光通过返回的时间来判断哪个效率高,好像不太具有说服力,因为windows是一个抢占式系统,也就是一个线程是不可能永远获取cpu时间的,会发生线程被抢占和时钟中断,这样通过GetTickCount或是GetThreadTimes函数获取的时间就不准了(我不知道你是如何获取的这个1188s和1187s),既然这个时间都不准确,还怎么去判断哪个时间高呢?一般来说,我们没有必要去关心到底哪个高哪个低,对于WaitForMultipleObjects函数而言,存在一个问题,就是如果等待中的多个内核对象有信号,它会返回序号小的那个内核对象的序号,这样就存在问题,如果一个序号小的内核对象不断被触发,那其他的就内核对象就没有机会返回了,前段时间自己写了一个程序就存在这样的问题!
      

  2.   

    WaitForSingleObject  这是等待, 等待的时间与效率完全没有任何关系如果说效率 WaitForMultipleObjects肯定跟高, WaitForSingleObject  其实也是由类似WaitForMultipleObjects 实现的, 封装了下而已
      

  3.   

    WaitForMultipleObjects效率高,
    你WaitForSingleObject等待是和顺序相关的。
      

  4.   

    楼主搞错方向了吧, 时间长短由信号产生时间决定,不是Wait函数产生的. 比如你等车, 车晚点了, 是你的效率问题吗. 如果非要说这2个函数的效率, 差别也在微秒级, 你测不出来.