当前位置: 首页 > news >正文

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 中用于定义首字母缩写词。 实例 标记一个首字母缩写&#xff1a; <acronym title"World Wide Web">WWW</acronym> 浏览器支持 IEFirefoxChromeSafariOpera 所有主流的浏览器均支持 <acronym> …...

python基本数据类型 - 字典集合

引入 在内存中存储的数据可以是不同的数据类型。比如名字可以使用字符串存储&#xff0c;年龄可以使用数字存储&#xff0c;python有6种基本数据类型&#xff0c;用于各种数据的存储&#xff0c;分别是&#xff1a;numbers(数字类型)、string(字符串)、List(列表)、Tuple(元组…...

python数据类型总结

标准数据类型 Python 有以下几种标准数据类型&#xff1a; 整数&#xff08;int&#xff09;&#xff1a;表示整数值&#xff0c;如 1, -5, 0 等。浮点数&#xff08;float&#xff09;&#xff1a;表示小数值&#xff0c;如 3.14, -0.01, 1.0 等。字符串&#xff08;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…...

车载红外夜视「升温」

红外夜视赛道&#xff0c;正在升温。 本周&#xff0c;全球车载后视镜头部供应商Gentex宣布&#xff0c;领投以色列热成像技术初创公司ADASKY&#xff0c;后者在B轮融资中拿到了3000万美元。按照计划&#xff0c;Gentex将协助ADASKY将红外夜视技术推向汽车市场。 事实上&#x…...

ext3 文件系统的特点、优缺点以及使用场景

ext3&#xff08;Third Extended File System&#xff09;是 ext2 文件系统的后续版本&#xff0c;它在 ext2 文件系统的基础上增加了日志功能&#xff0c;以提高文件系统的可靠性和稳定性。下面是 ext3 文件系统的特点、优缺点以及使用场景&#xff1a; 特点&#xff1a; ext…...

rk3568 修改开机logo

rk3568 修改开机显示logo Android 显示 logo 的作用是为了标识应用程序或设备的品牌和身份。在应用程序中&#xff0c;logo 可以帮助用户快速识别应用程序&#xff0c;并与其他应用程序区分开来。在设备中&#xff0c;logo 可以帮助用户识别设备的品牌和型号&#xff0c;以及与…...

golang实现关键路径算法

关键路径算法&#xff08;Critical Path Method&#xff0c;简称CPM&#xff09;是一种用于项目管理的技术&#xff0c;主要用于计算项目中的关键路径和关键活动。关键路径是指项目中的最长路径&#xff0c;决定了项目的最短完成时间。关键活动是指在关键路径上的活动&#xff…...

Overcoming catastrophic forgetting in neural networks

目录 预备知识&#xff1a; 论文笔记 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…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...

GraphQL 实战篇:Apollo Client 配置与缓存

GraphQL 实战篇&#xff1a;Apollo Client 配置与缓存 上一篇&#xff1a;GraphQL 入门篇&#xff1a;基础查询语法 依旧和上一篇的笔记一样&#xff0c;主实操&#xff0c;没啥过多的细节讲解&#xff0c;代码具体在&#xff1a; https://github.com/GoldenaArcher/graphql…...