windows核心编程-9.用内核对象进行线程同步
2015-11-25 22:15
495 查看
9.1 等待函数
9.2 等待成功所引起的副作用
9.3 事件内核对象
9.4 可等待的计时器内核对象
9.5 信号量内核对象
9.6 互斥量内核对象
9.7 线程同步对象速查表
9.8 其他线程同步函数
WaitForSingleObject等待函数使一个线程自愿进行等待,直到等待内核对象被触发为止。
控制内核事件状态 触发/未触发
over…
9.2 等待成功所引起的副作用
9.3 事件内核对象
9.4 可等待的计时器内核对象
9.5 信号量内核对象
9.6 互斥量内核对象
9.7 线程同步对象速查表
9.8 其他线程同步函数
1. 等待函数
DWORD WaitForSingleObject( HANDLE hObject, DWORD dwMilliseconds ); // hObject 标志要等待的内核对象 // dwMilliseconds指定线程最多愿意花多久来等待对象被触发 // INFINITE表示愿意无限等待
WaitForSingleObject等待函数使一个线程自愿进行等待,直到等待内核对象被触发为止。
//eg; DWORD dw=WaitForSingleObject(hProcess,5000); switch(dw){ case WAIT_OBJECT_0: //the process termited break; case WAIT_TIME_OUT: //the process did not temited within 5000 milliseconds break; case WAIT_FAILED: //bad call to function break; }
DWORD WaitForMultipleObjects( DWORD dwCount;//我们希望函数检查内核对象的数量 CONST HANDLE* phObjects,//指向内核对象句柄的数组 BOOL bWaitAll,//告诉我们函数希望使用哪种方式 DWORD dwMilliseconds ); //如果bWaitAll=TRUE 在所有内核对象触发之前 函数不会允许调用线程继续执行。 //...........=FALSE 有一个内核对象触发,函数就会立即返回
//example HANDLE h[3]; h[0]=hProcess0; h[1]=hProcess1; h[2]=hProcess2; DWORD dw=WaitForMultipleObjects(3,h,FALSE,5000); switch(dw){ case WAIT_FAILED: //BAD CALL break; case WAIT_TIMEOUT: // break; case WAIT_OBJECT_0+0: // h[0] break; case WAIT_OBJECT_0+1: // h[1] break; case WAIT_OBJECT_0+2: // h[2] break; }
2. 等待成功所引起的副作用
3.事件内核对象
HANDLE CreateEvent( PSECURITY_ATTRIBUTES psa, BOOL bManualReset,//TRUE-手动重置事件 FALSE-自动重置事件 BOOL bInitalState,//初始化状态为触发状态TRUE还是未触发状态FALSE PCTSTR pszName ); HANDLE CreateEventEx( PSECURITY_ATTRIBUTES psa, PCTSTR pszName, DWORD dwFlags, DWORD dwDesiredAccess );
控制内核事件状态 触发/未触发
BOOL SetEvent(HANDLE hEvent); BOOL ResetEvent(HANDLE hEvent);
4. 可等待的计时器内核对象
HANDLE CreateWaitableTimer( PSECURITY_ATTRIBUTES psa, BOOL bManualReset, PCTSTR pszName );
over…
相关文章推荐
- 如何重装TCP/IP协议
- Windows 8 官方高清壁纸欣赏与下载
- 谁是桌面王者?Win PK Linux三大镇山之宝
- 对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷
- Windows Clang开发环境备忘
- 从Windows系统下访问Linux分区相关软件
- 对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷
- Windows下搭建本地SVN服务器
- Visual Studio 2012 示例代码浏览器 - 数以千计的开发示例近在手边,唾手可得
- Visual Studio 2012 示例代码浏览器 - 数以千计的开发示例近在手边,唾手可得
- 微软镜像下载
- windows server域用户提升到本地更高权限组中的方法
- 使用命令修改注册表键值及权限
- 通过手机、电脑远程开关机,Windows和linux机手机,电脑相互控制
- Windows XP最新应用技巧大荟萃
- Windows 系统组策略应用全攻略(上)第1/2页
- VBS脚本写的Windows硬件检测工具分享
- Microsoft Windows Vista 简体中文企业版 MVL DVD IMG 32-bit(1.9GB)