关于CreateEvent的简单理解
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的简单理解相关推荐
- android 点击事件消费,Android View事件分发和消费源码简单理解
Android View事件分发和消费源码简单理解 前言: 开发过程中觉得View事件这块是特别烧脑的,看了好久,才自认为看明白.中间上网查了下singwhatiwanna粉丝的读书笔记,有种茅塞顿开 ...
- 【转载】Deep learning:十九(RBM简单理解)
Deep learning:十九(RBM简单理解) 这篇博客主要用来简单介绍下RBM网络,因为deep learning中的一个重要网络结构DBN就可以由RBM网络叠加而成,所以对RBM的理解有利于我 ...
- 学习:双机热备、集群、负载均衡、SQL故障转移群集简单理解(转)
双机热备.集群.负载均衡.SQL故障转移群集简单理解平常,大家常提到几个技术名词:双机热备.集群.负载均衡.SQL故障转移群集.这里,就我的理解,和大家简单探讨下,有不足或错误之处还请各位指出! 这些 ...
- 字符串匹配算法Java_如何简单理解字符串匹配算法?
这篇文章来说说如何简单理解KMP,BM算法.之前看过一些文章说,KMP算法很难理解. 可我并不觉得. 我反而觉得它容易理解.平时我们写java代码的时候, 判断一个字符串是否存在包含另一个字符串都是直 ...
- python yield的简单理解
2019独角兽企业重金招聘Python工程师标准>>> yield是个生成器,它可以使一个方法变成可迭代的方法,每次迭代返回yield后面的值 简单理解: >>>d ...
- linun——SElinux的简单理解
SElinux简单理解 一.什么是SElinux? SELinux 全称 Security Enhanced Linux (安全强化 Linux),是 MAC (Mandatory Access Co ...
- git pull 是到工作区还是暂存区_每天一Git之简单理解工作区和暂存区
每天一Git之简单理解工作区和暂存区 1. 工作区与暂存区命令初体验 1.1. 暂存区文件与文件夹管理 [root@number ~]# cd GitDir/git_learning/ [root@n ...
- c语言理解参数,c语言中对可变参数列表的简单理解
函数原型中一般情况下参数的数目是固定的,但是如果想在不同的时候接收不定数目的参数时该怎么办呢?c语言提供了可变参数列表来实现. 可变参数列表是通过宏来实现的,这些宏定义在stdarg.h的头文件中.头 ...
- QGraphicsScene 的简单理解--关于手册的简要翻译
文章目录 QGraphicsScene 的简单理解--关于手册的简要翻译 简介: 一般操作: 关于scene's bounding rect: the location of items. scene ...
最新文章
- c#读取excel两列数据并绘制xy曲线_EXCEL绘制三Y轴图表
- ThinkPHP 的一些知识
- linux内核二当家,Linux PWN从入门到熟练(二)
- 苹果手机各种型号图片_2020年12月小米/红米手机推荐|小米/红米手机选购要点|小米/红米手机性价比推荐,干货满满...
- mysql外键约束查询语句_MySQL数据库 : 查询语句,连接查询及外键约束
- mysql中的增删改查
- 【视频】利用IDEA 创建 spring mvc项目
- react-native 之 redux 与 react-redux
- jeesit1.27(4)-数据权限控制
- Git下载安装及基本配置
- 社会网络分析法SNA
- 为什么要用大写L替换小写L(l),idea提醒literal ‘xxx‘ ends with lowercase ‘l‘
- 黄梅一中高考2021成绩查询,2020年黄冈高考成绩出炉!这些高分考生太棒了!
- 集训队每周一赛2020-03-13(构造+找规律+字符串+并查集)
- 解决阿里云redis监听6379,配置规则也将6379端口开放,但是外网仍无法连接6379的问题。
- 了解利用API接口通过网格策略的增长模式
- 入网许可证_入网许可证怎么查询方法 入网许可证查询方法【图文演示】
- Linux负载均衡脚本,linux负载均衡软件设置(一)
- 2022-2027年中国体外诊断设备行业市场调研及未来发展趋势预测报告
- 医学图像分割UNet
热门文章
- B站梨米特概率论与数理统计学习笔记(1)
- ltspice语言中文_ltspice-一简介(中文教程教本)新.pdf
- 非常简单的申请微软学生KEY的方法
- linux环境oracle冷备份,Oracle 热备份和冷备份的区别
- windows2003中未分页内存泄漏导致服务器不稳定的解决方法
- mysql的锁机制(读锁,写锁,表锁,行锁,悲观锁,乐观锁,间隙锁)
- htt的缺点有哪些?这里列举的几点,欢迎留言
- L1-8 静静的推荐 (20),C语言,超级简单的代码哦,你不是不会,只是没细想而已
- sqltrace相关汇总
- python agg函数_个人对Pandas中agg、apply和transform函数的理解