windows核心编程 如何等待超过64(MAXIMUM_WAIT_OBJECTS) kernal object
Windows API WaitForMultiObjects(...) 最多只能等待MAXIMUM_WAIT_OBJECTS个kernal objects。MAXIMUM_WAIT_OBJECTS被定义为64。那么这就限制了一次最多只能等待64个内核对象。根据网上查阅的资料,这里给出一种解决方案,允许等待任意多的内核对象(系统支持的范围内)。
- #include <Windows.h>
- /*
- * Synchronically waiting for all objects signaled.
- * - handles : An array of object handles to wait.
- * - count : The count of handles.
- * returns : Same as WaitForMultipleObjects.
- */
- DWORD SyncWaitForMultipleObjs(HANDLE * handles, size_t count)
- {
- int waitingThreadsCount = count;
- int index = 0;
- DWORD res = 0;
- while(waitingThreadsCount >= MAXIMUM_WAIT_OBJECTS)
- {
- res = WaitForMultipleObjects(MAXIMUM_WAIT_OBJECTS, &handles[index], TRUE, INFINITE);
- if(res == WAIT_TIMEOUT || res == WAIT_FAILED)
- {
- puts("1. Wait Failed.");
- return res;
- }
- waitingThreadsCount -= MAXIMUM_WAIT_OBJECTS;
- index += MAXIMUM_WAIT_OBJECTS;
- }
- if(waitingThreadsCount > 0)
- {
- res = WaitForMultipleObjects(waitingThreadsCount, &handles[index], TRUE, INFINITE);
- if(res == WAIT_TIMEOUT || res == WAIT_FAILED)
- {
- puts("2. Wait Failed.");
- }
- }
- return res;
- }
windows核心编程 如何等待超过64(MAXIMUM_WAIT_OBJECTS) kernal object相关推荐
- 基于visual c++之windows核心编程代码分析(64)现有的exe文件中添加自己的代码
我们进行信息安全编程的时候,经常需要向exe文件插入自己的源代码, 我们如何在代码中实现呢.请见代码与注释讲解 #include <iostream.h> #include <win ...
- C++Windows核心编程读书笔记(转)
http://www.makaidong.com/(马开东博客) 这篇笔记是我在读<windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的 ...
- [C++]《Windows核心编程》读书笔记
这篇笔记是我在读<Windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对实现的推断,因此不少条款和Windows实际机制可能有出入 ...
- 未处理异常和C++异常——Windows核心编程学习手札之二十五
未处理异常和C++异常 --Windows核心编程学习手札之二十五 当一个异常过滤器返回EXCEPTION_CONTINUE_SEARCH标识符时是告诉系统继续上溯调用树,寻找另外的异常过滤器,但当每 ...
- 用户方式中线程的同步——Windows核心编程学习手札之八
用户方式中线程的同步 --Windows核心编程学习手札之八 系统中所有线程都必须拥有对各种系统资源的访问权,这些资源包括内存堆栈.串口.文件.窗口和许多其他资源.如果一个线程需要独占对资源的访问权, ...
- 线程与内核对象的同步——Windows核心编程学习手札之九
线程与内核对象的同步 --Windows核心编程学习手札之九 用户方式下的线程同步机制具有速度快的特点,但有其局限性,对于许多应用程序来说,并不合适.例如,互锁函数家族只能在单值上运行,根本无法使线程 ...
- Windows核心编程学习九:利用内核对象进行线程同步
注:源码为学习<Windows核心编程>的一些尝试,非原创.若能有助于一二访客,幸甚. 1.程序框架 #include "Queue.h" #include <t ...
- 《Windows核心编程系列》九谈谈同步设备IO与异步设备IO之同步设备IO
<Windows核心编程系列>九谈谈同步设备IO与异步设备IO之同步设备IO 同步设备IO 所谓同步IO是指线程在发起IO请求后会被挂起,IO完成后继续执行. 异步IO是指:线程发起IO请 ...
- 《windows核心编程系列》十八谈谈windows钩子
windows应用程序是基于消息驱动的.各种应用程序对各种消息作出响应从而实现各种功能. windows钩子是windows消息处理机制的一个监视点,通过安装钩子能够达到监视指定窗体某种类型的消息的功 ...
最新文章
- from . import_python首行代码import *,from * import * 解析
- tf17: “声音大挪移”
- ICLR认知科学@AI workshop一览
- DDD 领域驱动设计 教程
- 怎么给网站加js_网站站内SEO优化实操细节详解,权重上升嗖嗖的
- 币未来趋势分析_分析:中国便利店零售市场现状以及未来发展趋势
- 像素游戏的动态光影效果
- 让我安静的写会儿代码
- Maven的安装以及在Myeclipse上的配置——超详细
- 如何整一个厉害的产品slogan?
- 敏捷开发系列学习总结(10)——到底什么是敏捷开发?
- dorado 刷新_dorado BDF常见问题
- Mathcad tips_学习笔记
- 基于CompactRIO的嵌入式车载电性能测试系统研发
- mysql move table_关于move table和rebuild index批量操作的记录
- 哥尼斯堡七桥问题用计算机,哥尼斯堡七桥问题解法真的解不出来?请尽快解答.急...
- 思科光纤模块兼容性解决
- android 动态贴纸,萌拍动态贴纸相机软件下载
- 如何解决LabView的Active X容器中无Animation GIF Control问题
- scratch教程----5.特效的制作