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、由于存在对同一块内存进行读写,需要加锁,否则会出现各种异常问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Windows via C/C++是一本经典的计算机编程教材,它是针对Windows操作系统的开发而撰写的。本书是第五版的中文版,主要介绍了使用C/C++语言进行Windows应用程序的开发。 首先,本书详细介绍了Windows操作系统的基本原理和结构。它解释了Windows系统的体系结构,包括进程管理、内存管理、文件系统、网络等方面的知识。通过对Windows的底层架构的深入理解,读者可以更好地理解Windows应用程序的工作原理。 其次,本书重点讲解了使用C/C++语言进行Windows开发的技巧和方法。它详细介绍了Windows编程的基本概念和技术,如窗口、消息循环、多线程等。同时,它也介绍了使用MFC(Microsoft Foundation Class)和WinAPI(Windows Application Programming Interface)进行Windows开发的方法。读者可以通过学习这些知识,掌握Windows应用程序的开发技术。 最后,本书还介绍了一些高级主题,如COM(Component Object Model)、ActiveX、DirectX等。它通过实例和案例分析,帮助读者更深入地了解和应用这些技术。 总结来说,Windows via C/C++(5th)中文版是一本非常适合想要学习Windows应用程序开发的人的教材。它基于C/C++语言,通过讲解Windows操作系统的原理和结构,详细介绍了Windows开发的技巧和方法。通过阅读本书,读者可以获得丰富的知识和实际操作经验,为开发高质量的Windows应用程序奠定坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SunkingYang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值