CreateEvent 用来创建或打开一个命名的或无名的事件对象,对于它的其他解释,请自行百科,这里只简单描述它的两种常用用法!

CreateEvent 的官方定义如下:

HANDLE WINAPI CreateEvent(_In_opt_ LPSECURITY_ATTRIBUTES lpEventAttributes, //安全属性_In_     BOOL                  bManualReset, //设置信号复位方式为自动恢复为无信号状态(FALSE)还是手动恢复为无信号状态(TRUE)_In_     BOOL                  bInitialState, //初始状态_In_opt_ LPCTSTR               lpName  //信号名称,可以为Null
);

方式一:

hEvent = CreateEvent(NULL, FALSE, TRUE, NULL); //复位方式为自动恢复到无信号状态,且初始状态为有信号.

此时当使用如下表达式后:

DWORD dReturn = WaitForSingleObject(hEvent, 等待时间);

hEvent 就会变为无信号状态,如果在某个时候再次需要上面的式子成立并通过,则需要使用下面的语句使其变为有信号状态(此方式只能解锁一个等待线程,如需继续解锁,则需要再次使用下面的式子)

SetEvent(hEvent)

方式二:

hEvent = CreateEvent(NULL, TRUE, TRUE, NULL); //复位方式为手动恢复到无信号状态,且初始状态为有信号.

此时当使用如下表达式后:

DWORD dReturn = WaitForSingleObject(hEvent, 等待时间);

hEvent 就会自动再次变为有信号状态,上面的式子会直接执行并通过(同时有多个等待线程也会直接执行并通过),如果需要将hEvent设置为无信号状态,则需要手动使用下面的语句:

ResetEvent(hEvent);

注:上面的复位方式指的是恢复到无信号状态的方式,若设置为TRUE,则表示需要手动将其置为无信号,若为FALSE,则会自动变为无信号,千万别和信号量变为有信号状态的方式搞混了!

*最后还有一点就是可以利用该函数创建进程间同步,下面是MSDN原文,利用方法暂时没去测试,以后遇到了再去折腾吧。

关于CreateEvent的简单理解相关推荐

  1. android 点击事件消费,Android View事件分发和消费源码简单理解

    Android View事件分发和消费源码简单理解 前言: 开发过程中觉得View事件这块是特别烧脑的,看了好久,才自认为看明白.中间上网查了下singwhatiwanna粉丝的读书笔记,有种茅塞顿开 ...

  2. 【转载】Deep learning:十九(RBM简单理解)

    Deep learning:十九(RBM简单理解) 这篇博客主要用来简单介绍下RBM网络,因为deep learning中的一个重要网络结构DBN就可以由RBM网络叠加而成,所以对RBM的理解有利于我 ...

  3. 学习:双机热备、集群、负载均衡、SQL故障转移群集简单理解(转)

    双机热备.集群.负载均衡.SQL故障转移群集简单理解平常,大家常提到几个技术名词:双机热备.集群.负载均衡.SQL故障转移群集.这里,就我的理解,和大家简单探讨下,有不足或错误之处还请各位指出! 这些 ...

  4. 字符串匹配算法Java_如何简单理解字符串匹配算法?

    这篇文章来说说如何简单理解KMP,BM算法.之前看过一些文章说,KMP算法很难理解. 可我并不觉得. 我反而觉得它容易理解.平时我们写java代码的时候, 判断一个字符串是否存在包含另一个字符串都是直 ...

  5. python yield的简单理解

    2019独角兽企业重金招聘Python工程师标准>>> yield是个生成器,它可以使一个方法变成可迭代的方法,每次迭代返回yield后面的值 简单理解: >>>d ...

  6. linun——SElinux的简单理解

    SElinux简单理解 一.什么是SElinux? SELinux 全称 Security Enhanced Linux (安全强化 Linux),是 MAC (Mandatory Access Co ...

  7. git pull 是到工作区还是暂存区_每天一Git之简单理解工作区和暂存区

    每天一Git之简单理解工作区和暂存区 1. 工作区与暂存区命令初体验 1.1. 暂存区文件与文件夹管理 [root@number ~]# cd GitDir/git_learning/ [root@n ...

  8. c语言理解参数,c语言中对可变参数列表的简单理解

    函数原型中一般情况下参数的数目是固定的,但是如果想在不同的时候接收不定数目的参数时该怎么办呢?c语言提供了可变参数列表来实现. 可变参数列表是通过宏来实现的,这些宏定义在stdarg.h的头文件中.头 ...

  9. QGraphicsScene 的简单理解--关于手册的简要翻译

    文章目录 QGraphicsScene 的简单理解--关于手册的简要翻译 简介: 一般操作: 关于scene's bounding rect: the location of items. scene ...

最新文章

  1. c#读取excel两列数据并绘制xy曲线_EXCEL绘制三Y轴图表
  2. ThinkPHP 的一些知识
  3. linux内核二当家,Linux PWN从入门到熟练(二)
  4. 苹果手机各种型号图片_2020年12月小米/红米手机推荐|小米/红米手机选购要点|小米/红米手机性价比推荐,干货满满...
  5. mysql外键约束查询语句_MySQL数据库 : 查询语句,连接查询及外键约束
  6. mysql中的增删改查
  7. 【视频】利用IDEA 创建 spring mvc项目
  8. react-native 之 redux 与 react-redux
  9. jeesit1.27(4)-数据权限控制
  10. Git下载安装及基本配置
  11. 社会网络分析法SNA
  12. 为什么要用大写L替换小写L(l),idea提醒literal ‘xxx‘ ends with lowercase ‘l‘
  13. 黄梅一中高考2021成绩查询,2020年黄冈高考成绩出炉!这些高分考生太棒了!
  14. 集训队每周一赛2020-03-13(构造+找规律+字符串+并查集)
  15. 解决阿里云redis监听6379,配置规则也将6379端口开放,但是外网仍无法连接6379的问题。
  16. 了解利用API接口通过网格策略的增长模式
  17. 入网许可证_入网许可证怎么查询方法 入网许可证查询方法【图文演示】
  18. Linux负载均衡脚本,linux负载均衡软件设置(一)
  19. 2022-2027年中国体外诊断设备行业市场调研及未来发展趋势预测报告
  20. 医学图像分割UNet

热门文章

  1. B站梨米特概率论与数理统计学习笔记(1)
  2. ltspice语言中文_ltspice-一简介(中文教程教本)新.pdf
  3. 非常简单的申请微软学生KEY的方法
  4. linux环境oracle冷备份,Oracle 热备份和冷备份的区别
  5. windows2003中未分页内存泄漏导致服务器不稳定的解决方法
  6. mysql的锁机制(读锁,写锁,表锁,行锁,悲观锁,乐观锁,间隙锁)
  7. htt的缺点有哪些?这里列举的几点,欢迎留言
  8. L1-8 静静的推荐 (20),C语言,超级简单的代码哦,你不是不会,只是没细想而已
  9. sqltrace相关汇总
  10. python agg函数_个人对Pandas中agg、apply和transform函数的理解