事件(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 进程同步-事件的更多相关文章

  1. windows多线程同步--事件

    推荐参考博客:秒杀多线程第六篇 经典线程同步 事件Event   事件是内核对象,多用于线程间通信,可以跨进程同步 事件主要用到三个函数:CreateEvent,OpenEvent,SetEvent, ...

  2. Spring入门学习笔记(3)——事件处理类

    目录 Spring中的事件处理 Spring内建事件 监听Context事件 Example 自定义Spring事件 Spring中的事件处理 ApplicationContext 是Spring的核 ...

  3. JNI详解---从不懂到理解

    转载:https://blog.csdn.net/hui12581/article/details/44832651 Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... 11 C ...

  4. Python之路(第三十八篇) 并发编程:进程同步锁/互斥锁、信号量、事件、队列、生产者消费者模型

    一.进程锁(同步锁/互斥锁) 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的, 而共享带来的是竞争,竞争带来的结果就是错乱,如何控制,就是加锁处理. 例 ...

  5. 【Python下进程同步之互斥锁、信号量、事件机制】

    " 一.锁机制:  multiprocess.Lock 上篇博客中,我们千方百计实现了程序的异步,让多个任务同时在几个进程中并发处理,但它们之间的运行没有顺序.尽管并发编程让我们能更加充分的 ...

  6. [转]jqGrid 属性、事件全集

    本文转自:http://blog.csdn.net/rosanu_blog/article/details/8334070 以下是jqGrid 最常用的属性和事件,经过一段时间的整理,终于弄的差不多了 ...

  7. QWidget 键盘事件 焦点(QApplication源码)

    在Qt中,键盘事件和QWidget的focus密不可分:一般来说,一个拥有焦点(focus)的QWidget或者grabKeyboard()的QWidget才可以接受键盘事件. 键盘事件派发给谁? 如 ...

  8. zepto点击事件兼容pc和mobile

    判断pc还是mobile,重写click事件 var CLICK='click'; (function browserRedirect() { var sUserAgent = navigator.u ...

  9. C# 多线程(lock,Monitor,Mutex,同步事件和等待句柄)

    本篇从 Monitor,Mutex,ManualResetEvent,AutoResetEvent,WaitHandler 的类关系图开始,希望通过本篇的介绍能对常见的线程同步方法有一个整体的认识,而 ...

随机推荐

  1. 由cobertura插件生成测试覆盖率报告

    由于cobertura已经集成到maven中,所以可以很方便的直接调用此插件生成报告: 直接运行命令:mvn cobertura:cobertura 就可以直接生成测试报告了. 下面是截图:

  2. javaSE学习路线

    Java SE大致可分为以下几块内容: n  对象导论:如何用面向对象的思路来开发 n  深入JVM:Java运行机制以及JVM原理 n  面向对象的特征:封装.继承.抽象.多态 n  数组和容器:容 ...

  3. suspend

    两个线程的run方法同时调用一个加了同步锁的方法,如果一个线程使用了suspend方法,那么会独占并且锁死这个同步方法,别的线程就永远没有办法进入这个线程了. 特别的是,在main方法中,调用一个线程 ...

  4. c# System.Data.OracleClient需要Oracle客户端软件8.1.7或更高版本

    前几天遇到了这个问题,情景是与oracle数据库连接的时候出现的.本机已经安装了客户端,使用toad数据库工具能够与数据库相连进行相关的操作.但是在使用代码进行连接的时候出现了这样的问题.找了好久,都 ...

  5. j2ee学习资料收集

    1    tomcat web.xml加载顺序,  讲解了web.xml什么时候加载,内部的各个组件加载的顺序 http://blog.sina.com.cn/s/blog_4553489c01010 ...

  6. FTP : mput with no confirmation

    When you are transferring multiple files to your destination, 'mput' or 'mget' will be the one comma ...

  7. 数据挖掘系列(1)关联规则挖掘基本概念与Aprior算法

    整理数据挖掘的基本概念和算法,包括关联规则挖掘.分类.聚类的常用算法,敬请期待.今天讲的是关联规则挖掘的最基本的知识. 关联规则挖掘在电商.零售.大气物理.生物医学已经有了广泛的应用,本篇文章将介绍一 ...

  8. blog已搬迁

    All blogs are moved to my currently-used site: http://jianlu.github.io/

  9. Linux 路线 推荐

    1.<Linux程序设计>- 靠它来入门,然后装一个linux体系,练习shell(party)和linuxC,把基础打牢: 2. <深入理解Linux内核>和<Linu ...

  10. Linux系统下远程文件拷贝scp命令

    在Linux系统下,不同机器上实现文件拷贝 一.将本地文件拷贝到远程机器: scp /home/administrator/news.txt root@192.168.6.129:/etc/squid ...