CE 进程同步-事件
事件(event)分为有名的和无名的,使用有名事件的时候,在不同进程中创建的同名事件,其实就是同一个,这样就可以在不同的进程中使用了。两个进程里面都要创建事件,事件名要一致。
//进程1 HANDLE hPkey_down ;
//创建事件
hPkey_down = CreateEvent(NULL, //是否可被子进程继承,设为NULL为不可继承 FALSE, //是否为手动复原,设为FALSE为自动复原等待线程处理完后自动恢复到无信号状态,若为TRUE则调用ResetEvent(hPkey_down)清除 FALSE, //是否初始化时为有信号状态,设为FALSE为初始无信号状态 TEXT("UserInputEvent")//指定事件对象名称,若设为NULL则创建一个无名事件对象 );
SetEvent(hPkey_down); //触发事件
static DWORD TestThread()
{
) {
__try {
WaitForSingleObject(hPkey_down, INFINITE);
//事件触发时执行的操作。。。
}
_except(EXCEPTION_EXECUTE_HANDLER) {
}
}
;
}
//进程2
HANDLE hPkey_down ;
hPkey_down = CreateEvent(NULL, FALSE, FALSE, TEXT("UserInputEvent")); //创建事件
SetEvent(hPkey_down); //触发事件
附:CE提供了Mutex(互斥Mutual Exclusion)、Event和Semaphore三种内核机制来实现线程之间的同步。
Mutex在资源共享问题上用得比较多
//创建Mutex
HANDLE hMutex=CreateMutex( NULL, //CE不支持设置为NULL
FALSE, //是否为创建该Mutex的线程所拥有
_T("Mutex名称")); //可选,Mutex的名称
if(!hMutex)
{
//printf("Failed to CreateMutex().../n");
return FALSE;
}
if(ERROR_ALREADY_EXISTS == GetLastError())
{
//printf("The Mutex is already running.../n");
return FALSE;
}
//释放Mutex的占用
BOOL ReleaseMutex(hMutex);
Semaphore(信标或者信号灯)可理解为带有计数的Mutex。
//创建一个Semaphore对象
HANDLE hSemaphore= CreateSemaphore(NULL, //CE不支持设置为NULL
, //初始化计数
, //最大支持的线程数n
_T("Semaphore名称")); //
//释放Semaphore对象
BOOL ReleaseSemaphore(hSemaphore,//要释放的Semaphore句柄
, //释放的引用计数个数
); //返回释放前的Semaphore计数
CE 进程同步-事件的更多相关文章
- windows多线程同步--事件
推荐参考博客:秒杀多线程第六篇 经典线程同步 事件Event 事件是内核对象,多用于线程间通信,可以跨进程同步 事件主要用到三个函数:CreateEvent,OpenEvent,SetEvent, ...
- Spring入门学习笔记(3)——事件处理类
目录 Spring中的事件处理 Spring内建事件 监听Context事件 Example 自定义Spring事件 Spring中的事件处理 ApplicationContext 是Spring的核 ...
- JNI详解---从不懂到理解
转载:https://blog.csdn.net/hui12581/article/details/44832651 Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... 11 C ...
- Python之路(第三十八篇) 并发编程:进程同步锁/互斥锁、信号量、事件、队列、生产者消费者模型
一.进程锁(同步锁/互斥锁) 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的, 而共享带来的是竞争,竞争带来的结果就是错乱,如何控制,就是加锁处理. 例 ...
- 【Python下进程同步之互斥锁、信号量、事件机制】
" 一.锁机制: multiprocess.Lock 上篇博客中,我们千方百计实现了程序的异步,让多个任务同时在几个进程中并发处理,但它们之间的运行没有顺序.尽管并发编程让我们能更加充分的 ...
- [转]jqGrid 属性、事件全集
本文转自:http://blog.csdn.net/rosanu_blog/article/details/8334070 以下是jqGrid 最常用的属性和事件,经过一段时间的整理,终于弄的差不多了 ...
- QWidget 键盘事件 焦点(QApplication源码)
在Qt中,键盘事件和QWidget的focus密不可分:一般来说,一个拥有焦点(focus)的QWidget或者grabKeyboard()的QWidget才可以接受键盘事件. 键盘事件派发给谁? 如 ...
- zepto点击事件兼容pc和mobile
判断pc还是mobile,重写click事件 var CLICK='click'; (function browserRedirect() { var sUserAgent = navigator.u ...
- C# 多线程(lock,Monitor,Mutex,同步事件和等待句柄)
本篇从 Monitor,Mutex,ManualResetEvent,AutoResetEvent,WaitHandler 的类关系图开始,希望通过本篇的介绍能对常见的线程同步方法有一个整体的认识,而 ...
随机推荐
- setProgressBarIndeterminateVisibility(true);
此为在标题栏 上 设置一个loading 圈 实用...
- VisualSVN 4.0.11补丁原创发布
VisualSVN 4.0.11补丁原创发布 目前是官方最新版本.
- Informatica相同环境与不同环境的导入导出( Repository Name,Integration Service Name,Folder Name是否相同):
Informatica相同环境与不同环境的导入导出( Repository Name,Integration Service Name,Folder Name是否相同): 1.repository N ...
- 关于C语言的问卷调查(作业三)
1.你对自己的未来有什么规划?做了哪些准备? 答:我对我未来的规划就是希望能够学有所用,将来可以从事有关IT方面的,跟自己的专业对口.为此现在我需要多看一些和这个专业有关的书籍,自学一些知识,多些一些 ...
- Android Context上下文解析
1.Context概念 Context,相信不管是第一天开发Android,还是开发Android的各种老鸟,对于Context的使用一定不陌生~~你在加载资源.启动一个新的Activity.获取系统 ...
- Java 社区论坛 - Sym 1.6.0 发布
简介 Sym 是一个用 Java 写的现代化的社区论坛,欢迎来体验!(如果你需要搭建一个企业内网论坛,请使用 SymX) 非常详细的 Sym 功能点脑图 Sym 的诞生是有如下几点原因: (正版) 好 ...
- iOS架构师之路:慎用继承
最近在看大神Casa的文章<跳出面向对象思想(一) 继承>,脑洞大开.文章给我们展示了一个随着产品需求不断变化的例子,该例子中通过继承实现不同页面的搜索视图和搜索逻辑的代码复用,随着产品需 ...
- oracle使用sqlplus创建表空间
一.打开命令行窗口,输入以下命令:sqlplus /nolog 回车后,将出现提示符 SQL>, 这时输入conn / as sysdba 一般即可登录,如果失败的话,可以试一下用conn sy ...
- LeetCode Restore IP Addresses
DFS class Solution { public: vector<string> restoreIpAddresses(string s) { return insertDot(s, ...
- 初次学习shader
Shader "Custom/Diffuse Texture" { //在shader中的位置 Properties { //着色器的属性 _MainTex ("Base ...