Multiple-object Wait Functions函数一共有4个:
DWORD WaitForMultipleObjects(
DWORD nCount, // lpHandles中对象句柄的个数
const HANDLE *lpHandles, // 一组对象句柄
BOOL bWaitAll, //
DWORD dwMilliseconds // 定时时间间隔,单位为milliseconds(毫秒)
);
DWORD WaitForMultipleObjectsEx(
DWORD nCount, // lpHandles中对象句柄的个数
const HANDLE *lpHandles, // 一组对象句柄
BOOL bWaitAll,
DWORD dwMilliseconds, // 定时时间间隔,单位为milliseconds(毫秒)
BOOL bAlertable
);
// Waits until one or all of the specified objects are in the signaled state or the time-out interval elapses.
// The objects can include input event objects, which you specify using the dwWakeMask parameter.
DWORD MsgWaitForMultipleObjects(
DWORD nCount, // lpHandles中对象句柄的个数
const HANDLE *pHandles, // 一组对象句柄
BOOL fWaitAll,
DWORD dwMilliseconds, // 定时时间间隔,单位为milliseconds(毫秒)
DWORD dwWakeMask
);
DWORD MsgWaitForMultipleObjectsEx(
DWORD nCount, // lpHandles中对象句柄的个数
const HANDLE *pHandles, // 一组对象句柄
DWORD dwMilliseconds, // 定时时间间隔,单位为milliseconds(毫秒)
DWORD dwWakeMask,
DWORD dwFlags
);
对象句柄可以指定一系列的对象,如Event、Job、Memory resource notification、Mutex、Process、Semaphore、Thread、Waitable timer等。当同步对象的状态变为signaled或者设置的等待时间到了,函数就会返回。
定时时间间隔,如果dwMilliseconds为0,对象没有被触发信号,函数不会进入一个等待状态,它总是立即返回。如果dwMilliseconds为INFINITE,对象被触发信号后,函数才会返回。
bWaitAll:如果此参数为TRUE,则在lpHandles数组中的所有对象的状态发出信号时,该函数返回。如果为FALSE,则当任何一个对象的状态设置为信号时,该函数返回。在后一种情况下,返回值表示其状态导致函数返回的对象。
bAlertable:如果此参数为true,且线程处于等待状态,则当系统存在排队的I/O例程或APC时,该线程运行该I/O例程或APC并返回。否则,函数将不返回。
dwWakeMask:输入事件对象句柄将添加到对象句柄数组中的输入类型
Demo:
svn://gitee.com/sudaidai/Knowledge_List_of_C
文件夹路径:WindowsAPI/Wait Functions/Multiple-object
如还需了解细节前往:MsgWaitForMultipleObjectsE