Windows(MFC/C++)上进程间通讯的几种简单又实用的方法
前段时间,做了一个项目,涉及数据传输。项目实现方式有很多种,但不同的实现方式,对数据的传输方法不同,且各有优缺点。
下文就不同情况来如何选择数据传输(通讯)方式。
先说说需求,模块A获取测试数据,模块B将程序A获取的数据进行画图。
方式一、API方式
将 模块B封装为一个dll,然后供模块A调用,这样模块A就可以通过调用模块B封装的API将数据传给模块B。
优点
方便,实现简单。
缺点
只能在同一个线程中使用,且由于是同步方式,如果数据量特别大,或者模块B画图效率低下,引起线程卡死。
方式二、WM_COPYDATA消息
使用MFC封装消息OnCopyData,模块A将消息通过SendMessage方式发出,模块B监听WM_COPYDATA消息。
优点
1、方便,实现简单。
2、可以用于线程间通信,也可以进程间通讯
缺点
只能使用SendMessage,即同步线程,跟API方式一样会出现线程堵塞风险,且单次传输数据量有上限限制。
方式三、共享内存
MFC中有封装好的共享内存函数,定义好后,模块A直接将数据拷贝给共享内存变量,然后模块B直接读取共享变量即可。
优点
1、可以用于线程间,也可以用于进程间
2、数据量上限很高
3、可同步:模块A拷贝数据后,使用消息通知方式通知模块B,也可异步。
缺点
1、实现难度较高。
2、由于存在对同一块内存进行读写,需要加锁,否则会出现各种异常问题。
相关文章:
Windows(MFC/C++)上进程间通讯的几种简单又实用的方法
前段时间,做了一个项目,涉及数据传输。项目实现方式有很多种,但不同的实现方式,对数据的传输方法不同,且各有优缺点。 下文就不同情况来如何选择数据传输(通讯)方式。 先说说需求,模块A获取测试数据&#…...
嘉兴桐乡会计考证培训-备考中级职称有必要报班吗?
备考中级会计职称有必要报班吗?其实,备考报班不能说是必需的,但听课学习确实是节省时间的一种方式,根据同学们的反馈,自学所花费的时间远远多于跟着老师学。上元教育就整理了一些学员报班之前走过的弯路 报班之前 在2…...
java元注解和自定义注解的区别
Java的元注解和自定义注解是两个不同的概念。 元注解是Java内置的一组用于修饰其他注解的注解,包括Retention、Target、Inherited和Documented。它们可以控制被修饰的注解的保留策略、目标范围、是否继承等属性,并且可以在编写自定义注解时使用。 Retent…...
技术到底是什么
背景 我发了朋友圈:做了个奇怪的梦,梦见被离职了,理由竟然是:你技术太菜了 我补充评论:我还没想明白怎么回事,就醒了。有点遗憾的是:想再努力反驳两句,结果没机会了… 很多人评论…...
什么CRM客户管理系统最好?
产业互联网背景下,企业数字化转型日渐深化。毋庸置疑,客户是企业的命脉,企业发展的关键便是以客户为中心,为客户创造价值,并不断实现企业的可持续性增长,而这也是每个企业永不落幕的主题。 一套优秀的CRM客…...
吴军《计算之魂》读后感
前言 断断续续,终于完成了这本书的第一次通读,记录下自己的一些想法。 先说一个小故事。前段时间家里买了一个小鱼缸,问我有没有办法让水自动循环,但不想用电。没有好的想法,去小某书上搜了下,好多案例教…...
CSS进阶
01-复合选择器 定义:由两个或多个基础选择器,通过不同的方式组合而成。 作用:更准确、更高效的选择目标元素(标签)。 后代选择器 后代选择器:选中某元素的后代元素。 选择器写法:父选择器 …...
金兰组织 | 2023金兰解决方案集经营管理篇正式发布
为助力企业创新管理、提质增效,人大金仓携手金兰组织成员单位,于近期发布多项经营管理领域的联合解决方案,共享创新应用成果。 /人大金仓高级副总裁宋瑞/ 人大金仓高级副总裁宋瑞在致辞中表示:“联合解决方案创新是指通过把不同领…...
【python】pytorch包:深度学习(序章)
今日听闻师姐说pytorch实现深度学习要比keras更好用一些,特此记录 Part 0. 机器学习 与 深度学习 的联系与区别 参考B站视频链接 联系 深度学习是机器学习的分支,人工神经网络为基础,对数据的特征进行学习的方法 区别 特征抽取 机器学…...
HTML <acronym> 标签
HTML5 中不支持 <acronym> 标签在 HTML 4 中用于定义首字母缩写词。 实例 标记一个首字母缩写: <acronym title"World Wide Web">WWW</acronym> 浏览器支持 IEFirefoxChromeSafariOpera 所有主流的浏览器均支持 <acronym> …...
python基本数据类型 - 字典集合
引入 在内存中存储的数据可以是不同的数据类型。比如名字可以使用字符串存储,年龄可以使用数字存储,python有6种基本数据类型,用于各种数据的存储,分别是:numbers(数字类型)、string(字符串)、List(列表)、Tuple(元组…...
python数据类型总结
标准数据类型 Python 有以下几种标准数据类型: 整数(int):表示整数值,如 1, -5, 0 等。浮点数(float):表示小数值,如 3.14, -0.01, 1.0 等。字符串(str&…...
TS内置类型总结
typeof 取对象身上的类型 const person {name: ,job: ,age:18 } type p typeof person ->> type p {name: string;job: string;age: number; }keyof取一个类型的属性明作为一个联合类型 const person {name: ,job: ,age: 18 } type p typeof person type k keyof p…...
Spring Cloud Alibaba: Gateway 网关过滤器 GatewayGatewayFilter factory (记录)
目录 AddRequestHeader GatewayFilter factory AddRequestHeadersIfNotPresent GatewayFilter factory AddRequestParameter GatewayFilter Factory AddResponseHeader GatewayFilter Factory CircuitBreaker GatewayFilter factory circuit breaker based on the status…...
Windows Server 2016版本说明
Windows Server 2016 Essentials edition Windows Server 2016 Essentials版是专为小型企业而设计的。它对应于Windows Server的早期版本中的Windows Small Business Server。此版本最多可容纳25个用户和50台设备。它支持两个处理器内核和高达64GB的RAM。它不支持Windows Serve…...
车载红外夜视「升温」
红外夜视赛道,正在升温。 本周,全球车载后视镜头部供应商Gentex宣布,领投以色列热成像技术初创公司ADASKY,后者在B轮融资中拿到了3000万美元。按照计划,Gentex将协助ADASKY将红外夜视技术推向汽车市场。 事实上&#x…...
ext3 文件系统的特点、优缺点以及使用场景
ext3(Third Extended File System)是 ext2 文件系统的后续版本,它在 ext2 文件系统的基础上增加了日志功能,以提高文件系统的可靠性和稳定性。下面是 ext3 文件系统的特点、优缺点以及使用场景: 特点: ext…...
rk3568 修改开机logo
rk3568 修改开机显示logo Android 显示 logo 的作用是为了标识应用程序或设备的品牌和身份。在应用程序中,logo 可以帮助用户快速识别应用程序,并与其他应用程序区分开来。在设备中,logo 可以帮助用户识别设备的品牌和型号,以及与…...
golang实现关键路径算法
关键路径算法(Critical Path Method,简称CPM)是一种用于项目管理的技术,主要用于计算项目中的关键路径和关键活动。关键路径是指项目中的最长路径,决定了项目的最短完成时间。关键活动是指在关键路径上的活动ÿ…...
Overcoming catastrophic forgetting in neural networks
目录 预备知识: 论文笔记 1. Introduction 2. Elastic weight consolidation 2.1 EWC allows continual learning in a supervised learning context 2.2 EWC allows continual learning in a reinforcement learning context 3. Conclusion 文章链接&#x…...
OpenClaw定时任务:千问3.5-9B每日早报自动推送
OpenClaw定时任务:千问3.5-9B每日早报自动推送 1. 为什么需要自动化早报推送 每天早上打开电脑第一件事,就是手动收集行业新闻、技术动态和日程提醒,再整理成早报发到团队群。这种重复劳动持续三个月后,我开始思考:能…...
基于 ThinkLink 的 CJ188 冷水表无线接入方案
让传统冷水表快速接入 LoRaWAN 与物联网平台在很多住宅小区、园区楼宇、老旧水务改造项目中,现场已经部署了大量传统冷水表。 这些水表本身具备稳定计量能力,但往往存在一个共同问题:数据采集依赖人工,抄表效率低,管理…...
Unity 2018 + Facebook SDK 7.15.1避坑指南:从崩溃解决到完整功能实现
Unity 2018与Facebook SDK 7.15.1深度适配实战手册 当老牌游戏引擎遇上社交巨头的SDK,版本兼容性问题往往成为开发者的噩梦。本文将带您深入探索Unity 2018与Facebook SDK 7.15.1这对"经典组合"的适配之道,从环境搭建到功能实现,完…...
如何利用社交平台快速提升gallery本地AI平台影响力:5个实战推广策略
如何利用社交平台快速提升gallery本地AI平台影响力:5个实战推广策略 【免费下载链接】gallery A gallery that showcases on-device ML/GenAI use cases and allows people to try and use models locally. 项目地址: https://gitcode.com/GitHub_Trending/galler…...
ResNet变体探索:从基础ResBlock到高效架构设计
1. ResBlock基础结构与设计哲学 残差块(Residual Block)作为ResNet的核心组件,彻底改变了深度神经网络的训练方式。我第一次在ImageNet分类任务中使用ResNet-50时,就被它解决梯度消失问题的能力震惊了——传统VGG网络在超过19层后…...
形式验证实战:5个降低状态空间复杂度的黑科技(附内存控制器案例)
形式验证实战:5个降低状态空间复杂度的黑科技(附内存控制器案例) 在芯片设计领域,形式验证(Formal Verification, FV)正逐渐成为确保设计正确性的重要手段。然而,随着设计复杂度的提升ÿ…...
2026-04-06:字典序最小和为目标值且绝对值是排列的数组。用go语言,给你一个正整数 n 和一个整数 target。 你需要构造一个长度为 n 的整数数组,要求同时满足: 1.数组中所有元素的总
2026-04-06:字典序最小和为目标值且绝对值是排列的数组。用go语言,给你一个正整数 n 和一个整数 target。 你需要构造一个长度为 n 的整数数组,要求同时满足: 1.数组中所有元素的总和必须等于 target。 2.把数组里每个元素取绝对值…...
OpenClaw技能开发入门:为Phi-3-vision-128k-instruct定制自动化流程
OpenClaw技能开发入门:为Phi-3-vision-128k-instruct定制自动化流程 1. 为什么需要为Phi-3开发OpenClaw技能? 去年夏天,我接手了一个图像处理自动化项目。当时每天要手动处理数百张产品图,用Photoshop调整尺寸、添加水印、生成缩…...
无障碍阅读助手:OpenClaw+Phi-3-vision-128k-instruct实时解析复杂图表
无障碍阅读助手:OpenClawPhi-3-vision-128k-instruct实时解析复杂图表 1. 为什么需要图表无障碍解析工具 去年帮一位视障朋友准备资格考试时,我深刻体会到技术文档中的图表是如何成为"信息黑洞"的。当他用屏幕阅读器听到"参见图3"…...
OpenClaw调试技巧:Gemma-3-12b-it任务失败的根本原因分析
OpenClaw调试技巧:Gemma-3-12b-it任务失败的根本原因分析 1. 问题背景与现象描述 上周我在本地部署了Gemma-3-12b-it模型,准备用OpenClaw实现自动化周报生成。结果连续三次任务都在"分析本周工作内容"环节卡住,控制台只显示Task …...
