Win32 函数中的 WaitForMultipleObjects() 允许你在同一时间等待一个以上的对象。你必须将一个由 handles 组成的数组交给此函数,并指定要等待其中一个对象或是全部的对象。
函数原型:
DWORD WaitForMultipleObjects (
DWORD nCount,
CONST HANDLE *lpHandles,
BOOL bWaitAll,
DWORD dwMilliseconds );
参数说明:
nCount 表示 lpHandles 所指之 handles 数组的元素个数,最大容量是MAXIMUM_WAIT_OBJECTS.
lpHandles 指向一个由对象 handles 所组成的数组这些 handles 不需要为相同的类型。
bWaitAll 如果此为 TURE 表示所有的handles都必须激发,此函数才得以返回,否则此函数将在任 何一个 handle 激发时就返回。
dwMilliseconds 当该时间长度终了时,即使没有任何handles激发,此函数也会返回。此值可为0,以便测试。亦可指定为INFINITE 表示无穷等待。
返回值:
1、如果时间终了而返回,则返回值是WAIT_TIMEOUT,类似 WaitForSingleObject().
2、如果 bWaitAll 是 TURE 那么返回值是WAIT_OBJECT_0.
3、如果 bWaitAll 是 FALSE那么将返回值减去 WAIT_OBJECT_0,就表示数组中的哪一个handle被激发了。
4、如果你等待的对象中有任何 mutexes,那么返回值可能从WAIT_ABANDONED_0 到WAIT_ABANDONED_0 + nCount -1。、
5、如果函数失败,它会传回 WAIT_FAILED .这时候你可以使用GetLastError()找出失败的原因。
注意:handles的数组中的元素个数有上限,绝对不能够超过MAXIMUM_WAIT_OBJECTS.在 WindowsNT中 其值为 64.
函数原型:
DWORD WaitForMultipleObjects (
DWORD nCount,
CONST HANDLE *lpHandles,
BOOL bWaitAll,
DWORD dwMilliseconds );
参数说明:
nCount 表示 lpHandles 所指之 handles 数组的元素个数,最大容量是MAXIMUM_WAIT_OBJECTS.
lpHandles 指向一个由对象 handles 所组成的数组这些 handles 不需要为相同的类型。
bWaitAll 如果此为 TURE 表示所有的handles都必须激发,此函数才得以返回,否则此函数将在任 何一个 handle 激发时就返回。
dwMilliseconds 当该时间长度终了时,即使没有任何handles激发,此函数也会返回。此值可为0,以便测试。亦可指定为INFINITE 表示无穷等待。
返回值:
1、如果时间终了而返回,则返回值是WAIT_TIMEOUT,类似 WaitForSingleObject().
2、如果 bWaitAll 是 TURE 那么返回值是WAIT_OBJECT_0.
3、如果 bWaitAll 是 FALSE那么将返回值减去 WAIT_OBJECT_0,就表示数组中的哪一个handle被激发了。
4、如果你等待的对象中有任何 mutexes,那么返回值可能从WAIT_ABANDONED_0 到WAIT_ABANDONED_0 + nCount -1。、
5、如果函数失败,它会传回 WAIT_FAILED .这时候你可以使用GetLastError()找出失败的原因。
注意:handles的数组中的元素个数有上限,绝对不能够超过MAXIMUM_WAIT_OBJECTS.在 WindowsNT中 其值为 64.