WaitForMultipleObjects使用详解
来源:互联网 发布:在淘宝好评怎么改差评 编辑:程序博客网 时间:2024/05/16 08:03
当WaitForMultipleObjects()等到多个内核对象的时候,
如果它的bWaitAll 参数设置为false。其返回值减去WAIT_OBJECT_0 就是参数lpHandles数组的序号。
如果同时有多个内核对象被出发,这个函数返回的只是其中序号最小的那个。
问题就在这里,我们如何可以获取所有被同时触发的内核对象。
举个例子:我们需要在一个线程中处理从完成端口、数据库、和可等待定时器来的数据。
一个典型的实现方法就是:用WaitForMultipleObjects等待所有的这些事件。
如果完成端口,数据库发过来的数据量非常大,可等待定时器时间也只有几十毫秒。
那么这些事件同时触发的几率可以说非常大,我们不希望丢弃任何一个被触发的事件。那么如何能高效地实现这一处理呢?
多个内核对象被触发时,WaitForMultipleObjects选择其中序号最小的返回。而WaitForMultipleObjects它只会改变使它返回的那个内核对象的状态。
这儿又会产生一个问题,如果序号最小的那个对象频繁被触发,那么序号比它大的内核对象将的不到被出理的机会。
为了解决这一问题,可以采用双WaitForMultipleObjects检测机制来实现。见下面的例子:
- WaitForMultipleObjects使用详解
- WaitForMultipleObjects使用详解
- WaitForMultipleObjects使用详解
- WaitForMultipleObjects使用详解
- WaitForMultipleObjects使用详解
- WaitForMultipleObjects使用详解
- WaitForMultipleObjects使用详解
- WaitForMultipleObjects使用详解
- WaitForMultipleObjects使用详解
- WaitForMultipleObjects使用详解
- WaitForMultipleObjects使用详解
- WaitForMultipleObjects使用详解
- WaitForMultipleObjects使用详解
- WaitForMultipleObjects使用详解
- WaitForSingleObject和WaitForMultipleObjects使用详解
- WaitForSingleObject和WaitForMultipleObjects使用详解
- WaitForSingleObject和WaitForMultipleObjects使用详解
- WaitForSingleObject和WaitForMultipleObjects使用详解
- pku3615 Cow Hurdles
- 命令行下安装oracle10g
- 【转】用JDOM建立XML文件
- 用Java语言编写通过代理访问的应用程序
- GetModuleFileName函数
- WaitForMultipleObjects使用详解
- Java应用程序的网络运行环境编程
- LCS 两个字符串的最大公共子字符串
- 免费淘宝相册系统网站源码 v9.2
- JSF入门的小例子
- java关于时间格式化和转换的总结
- 开启Java对代理服务器和HTTP验证的支持
- Oracle11新特性:分区功能增强-Oracle新增复合分区 (转载)
- 耳语之人