C++ win开发 WaitForSingleObject函数
来源:互联网 发布:afnetworking数据缓存 编辑:程序博客网 时间:2024/05/29 04:20
C++涉及到多线程时 会经常用到WINAPI WaitForSingleObject函数
但是因为很多网上资料 直接参考官网的英文翻译 很多地方比较晦涩难理解
个人也做了一些测试 才弄清楚了这个函数的一些使用
首先看百度上的说明
WaitForSingleObject函数用来检测hHandle事件的信号状态,在某一线程中调用该函数时,线程暂时挂起,如果在挂起的dwMilliseconds毫秒内,线程所等待的对象变为有信号状态,则该函数立即返回;如果超时时间已经到达dwMilliseconds毫秒,但hHandle所指向的对象还没有变成有信号状态,函数照样返回。参数dwMilliseconds有两个具有特殊意义的值:0和INFINITE。若为0,则该函数立即返回;若为INFINITE,则线程一直被挂起,直到hHandle所指向的对象变为有信号状态时为止
我个人的理解为 WaitForSingleObject函数传入的hHandle对象 如果处于有信号的状态 就会返回
如果没有信号 则会挂起 时间由dwMilliseconds参数决定
最关键的是这个复位reset的概念
这里所讲的复位reset就是指hHandle对象置于无信号状态
看看下面的创建Event函数
第二个参数就是用于指定其复位方式
如果是true 即手动reset方式
那么线程调度到WaitForSingleObject函数 hHandle对象为有信号状态时
不会去修改hHandle对象的信号状态
如果是false 则自动reset
线程调用WaitForSingleObject函数时 自动吧hHandle对象置为无信号
手工设置HANDLE对象的信号状态 可以使用下面2个函数
ResetEvent( __in HANDLE hEvent ) //复位 即设置为无信号状态
SetEvent( __in HANDLE hEvent ) // 设置为有信号状态
- C++ win开发 WaitForSingleObject函数
- 【C++】WaitForSingleObject函数的使用&&WaitForSingleObject和CEvent用法
- WaitForSingleObject函数
- WaitForSingleObject函数
- WaitForSingleObject函数
- WaitForSingleObject函数
- WaitForSingleObject函数
- WaitForSingleObject函数
- WaitForSingleObject函数
- WaitForSingleObject函数
- WaitForSingleObject函数
- WaitForSingleObject函数
- WaitForSingleObject()函数、WaitForMultipleObject()函数
- WaitForSingleObject()函数、WaitForMultipleObject()函数
- WaitForSingleObject()函数、WaitForMultipleObject()函数
- WaitForSingleObject()函数、WaitForMultipleObject()函数
- WaitForSingleObject()函数、WaitForMultipleObject()函数
- WaitForSingleObject()函数、WaitForMultipleObject()函数
- Java生成静态HTML页面
- B+树
- uva11029(幂取模)
- java 生成静态html的一段代码
- mapreduce.{map|reduce}.java.opts vs. mapreduce.{map|reduce}.memory.mb
- C++ win开发 WaitForSingleObject函数
- Test
- 07-2. Insert or Merge (25)
- linux 进程控制1 获得当前进程的进程ID和其父进程ID 华清远见-《嵌入式 Linux 应用程序开发标准教程》
- Java复制文件
- 一些常用的html/CSS效果---小技巧
- 怎样写防止Sql注入的Sql语句
- /bin/sh^M: bad interpreter:没有那个文件或目录解决
- 你这样用过DO循环吗?