Multiple-object Wait Functions

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

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容