2024年3月13日发(作者:)

WaitForMultipleObjects使用详解

函数原型:DWORD WaitForMultipleObjects(

DWORD

nCount

, // number of handles in array

CONST HANDLE

*

lpHandles

, // object-handle array

BOOL

bWaitAll

, // wait option

DWORD

dwMilliseconds

// time-out interval

);

WaitForMultipleObjects函数用于等待多个内核对象,前两个参数分别为要等待的内核

对象的个数和句柄数组指针。如果将第三个参数bWaitAll的值设为TRUE,等待的内核

对象全部变成受信状态以后此函数才返回。否则,bWaitAll为0的话,只要等待的内核

对象中有一个变成了受信状态,WaitForMultipleObjects就返回,返回值指明了是哪一

个内核对象变成了受信状态。

实例一:

下面的代码说明了函数返回值的作用:

HANDLE h[2];

h[0] = hThread1;

h[1] = hThread2;

DWORD dw = ::WaitForMultipleObjects(2, h, FALSE, 5000);

switch(dw)

{ case WAIT_FAILED:

// 调用WaitForMultipleObjects函数失败(句柄无效?)

break;

case WAIT_TIMEOUT:

// 在5秒内没有一个内核对象受信

break;

case WAIT_OBJECT_0 + 0:

// 句柄h[0]对应的内核对象受信

break;