Windows Event 的各个相关函数解释 及 简单例子一个
来源:互联网 发布:哪有好的java培训 编辑:程序博客网 时间:2024/06/05 17:12
SetEvent 是设置信号为 有信号状态
ReSetEvent 是设置信号为 无信号状态
CreateEvent的第二个参数如果是TRUE,意思是你必须用SetEvent和ResetEvent来设置信号,如果为FALSE,则用WaitForSingleObject自动进入无信号状态。结束后用SetEvent重置为信号状态。
OpenEvent可以打开一个先前已经创建好的Event,只要名字对,就可以打开该event。
Event事件分 人工事件和自动事件。
当使用人工事件方式时,需要手动设置ResetEvent 为无信号状态,及表示资源被占用中。当释放资源时,用SetEvent 设置为有信号状态。
当使用自动事件方式时,系统默认将ResetEvent 设置为无信号状态,最后释放资源时用SetEvent设置为有信号状态。
以下有2个进程,A和B,其中A可以决定一个event的状态(要么set,要么reset),而B中有一个循环不停去读该event(waitforsingleobject()函数),并给出输出提示当前event的状态是什么。
//a.cpp#include <iostream>#include <Windows.h>using namespace std;int main(){ int i = 0; CHAR a[20] = "RIX"; //event name LPCSTR str = a; //event name HANDLE handle = CreateEvent(NULL, TRUE, TRUE, str); //create a event while(1) { cout<<"Press 1 to set event,"; cout<<" 2 to reset event,"; cout<<" 5 to shut down..."<<endl; cin>>i; //read command is a while(1) looop if (i == 1) //to set event { if (SetEvent(handle)) cout<<"SetEvent() completed!"<<endl; else cout<<"SetEvent() err!!"<<endl; } else if (i == 2) //to reset event { if (ResetEvent(handle)) cout<<"ResetEvent() completed!"<<endl; else cout<<"ResetEvent() err!!"<<endl; } else if (i==0) //break { cout<<"going to shut down..."<<endl; break; } } return 1;}
//b.cpp#include <iostream>#include <Windows.h>using namespace std;int main(){ LPCSTR a = "RIX"; HANDLE handle = OpenEvent(EVENT_ALL_ACCESS, FALSE, a); DWORD b = 22; while(1) { Sleep(1000); b = WaitForSingleObject(handle, 1); //check event value if (b == 0) //if event is set!! b can do something { cout<<"Got event!!!!!!!!! We can do something!"<<endl<<endl; } else //if event is not set, waitforsingleobject is timeout... { cout<<"Timeout........... b = "<<b<<endl<<endl; } } }
我们运行一下,
首先创建一个set的event,然后点2改为reset,然后再点1改为set,看process A 和 process B的结果:
A process:
B process:
- Windows Event 的各个相关函数解释 及 简单例子一个
- 一个简单但详细的解释Windows文件映射读取数据文件的例子
- 一个简单但详细的解释Windows文件映射读取数据文件的例子
- 一个简单但详细的解释Windows文件映射读取数据文件的例子
- 一个简单的有关 C# event 的例子!
- C# event 的一个例子
- C#一个简单windows服务的例子
- windows shell语法及简单的例子
- 一个简单的运算表达式解释器例子
- linux下Makefile的简单例子及解释
- 一个简单的函数适配器的例子
- Windows Event Log相关函数使用
- 一个虚函数的简单例子
- 一个闭包函数的简单例子
- 使用函数的一个简单例子
- 函数对象 及 简单的小例子
- 一个简单例子解释 Java factory
- 一个简单函数(String函数)的复杂解释
- 【代码大全】第15章 使用条件语句
- 【代码大全】第16章 控制循环
- GDB调试
- 【代码大全】第17章 不常见的控制结构
- “OVERRIDE”: 未知重写说明符
- Windows Event 的各个相关函数解释 及 简单例子一个
- 【Cocos2d-X开发学习笔记】第13期:动作类之基本动作的使用(上)
- 【代码大全】第18章 表驱动法
- GRE(Generic Routing Encapsulation,通用路由封装)简介
- 位图Bitmap
- 【代码大全】第19章 一般控制问题
- 新的开始 新的征程
- POJ-3680-Intervals
- 最优间隔分类、原始/对偶问题、SVM对偶—斯坦福ML公开课笔记7