使用全局CEvent在不同进程间通信
2013-03-22 14:55
148 查看
创建两个基于MFC的控制台应用程序;
假设一个exe叫【事件1】,另一个exe叫【事件2】;【事件1】中按空格键向【事件2】发消息,【事件2】响应并显示!
【事件1】关键程序:
【事件2】关键程序(启动和主循环中):
线程函数中:
假设一个exe叫【事件1】,另一个exe叫【事件2】;【事件1】中按空格键向【事件2】发消息,【事件2】响应并显示!
【事件1】关键程序:
// // 创建一个共享的全局事件 // 第二个参数为设置信号后,自动复位为无信号 // 第三个参数为共享全局用的名字 // CEvent *m_pEvt = new CEvent(FALSE, FALSE, "12345"); if (m_pEvt == NULL) { printf("创建事件失败\n"); return 0; } printf("按下空格键,向另一个创建exe发送事件通知\n"); // // 按空格键向另一个进程发送事件 // while(1) { if (kbhit()) { char ch = getch(); if (ch == 'q') break; if (ch == ' ') { static int k = 0; printf("发送事件: %d\n", k++); m_pEvt->SetEvent(); } } Sleep(5); }
【事件2】关键程序(启动和主循环中):
// // 创建一个共享的全局事件 // 第二个参数为设置信号后,自动复位为无信号 // 第三个参数为共享全局用的名字 // CEvent *m_pEvt = new CEvent(FALSE, FALSE, "12345"); if (m_pEvt == NULL) { printf("创建事件失败\n"); return 0; } // // 创建线程等待接收 // AfxBeginThread(MyControllingFunction, m_pEvt); printf("等待另一个创建exe发送的事件通知\n"); // // 主循环等待退出 // while(1) { Sleep(5); }
线程函数中:
UINT MyControllingFunction( LPVOID pParam ) { CEvent *pEvt = (CEvent *)pParam; while(1) { //使用 CSyncObject::operator HANDLE 转型 WaitForSingleObject((HANDLE)(*pEvt), INFINITE); static int k = 0; printf("收到事件: %d\n", k++); } }
相关文章推荐
- python3 - 声明全局变量并在不同模块中的使用.
- 使用互斥对象CMutex实现不同的进程间通信
- npm安装全局和局部包版本不同时,如何使用到局部包版本(举例webpack)
- 5章6节局部与全局使用同一个变量不同定义的调用
- (原)python中不同文件之间使用所谓的全局变量
- 《GOF设计模式》—单件(Singleton)—Delphi源码示例:单件接口(使用全局变量)
- maven中使用不同配置文件打包
- Linux进程间通信——使用信号量
- Linux进程间通信--使用信号量
- android Listview的getView和convertview原理解析以及使用不同的item布局(二)
- nginx location语法使用及一些全局变量
- 请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代
- 使用use注册Vue全局组件和全局指令的方法
- Android 使用 AIDL 实现进程间通信,使用基本类型作为输入和输出参数
- JSP中使用AJAX示例:分别将结果提交为STRUTS,SERVLET,WEBWORK的不同操作方式
- 不同集合含有相同元素时不能使用链表
- Linux进程间通信——使用信号量
- [转]android使用全局变量的两种方法
- 一起talk C栗子吧(第九十六回:C语言实例--使用共享内存进行进程间通信二)
- iOS中使用的tableview为group形式时如何设置不同sections的间距