C++跨平台(三):进程间通讯(IPC)的技术选型

您所在的位置:网站首页 c语言线程间通信 C++跨平台(三):进程间通讯(IPC)的技术选型

C++跨平台(三):进程间通讯(IPC)的技术选型

2023-10-16 08:36| 来源: 网络整理| 查看: 265

本系列继续记录,作为一个新人小白,在第一次接触C++跨平台(win、linux、mac)开发的经验和踩坑。

前言

在四个月前,我还是一名学生,开发一个功能,我的需求就是能跑就行,最多加一个没有bug。 在这里插入图片描述而现在,在一次次的开会中,我成为了憔悴的社会打工人,也明白了在代码开发前,更重要的是设计和架构,确定好大方向,后面的事情才能走在正确的道路上。 开发一个功能,没有bug的运行自然是最低要求,但是往往在开发前,需要经过技术选型,选择一个最适合的方案,这几天有一个跨进程通信的需求,我们就使用什么方案也经过讨论,下面我把我的心得记录如下。

进程间通信 进程间通信是什么?

进程之间要保证相对独立,一个进程不能随便访问另一个进程的地址空间,这是系统安全性的保证和需要。但实际上进程之间确实也要协作在一起去完成一项大的任务,这时就需要进程之间有一定的通知和数据传递。在保证进程之间相对独立的同时,也要保证进程之间合理有效的通信。

简述一下需求

本机几个进程通信需求,用来传输数据,不需要跨机器。 跨平台需求。

进程间通信有哪些方式

在百度搜索常见的进程间通讯,你会得到以下答案:

匿名管道通信 匿名管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。高级管道通信有名管道通信消息队列通信信号量通信共享内存等socket

但是在实际的开发中,我们更像使用的是成熟的方案,比如封装好的第三方库,这样极大减少开发成本,并且经过使用验证的第三方库,也可以保底不会出现大问题。

借鉴经验

借鉴已有的经验,通常公司开发,会使用三种方式:

socket,使用socket封装一套通讯库,性能好rpc:现在比较新的方式ipc第三方库

不知道从哪里寻找经验的,建议直接github: 在这里插入图片描述

需要考虑的地方

经过以上的步骤,我们现在至少能找到一个能用,并且不要大量人力开发的ipc方案了。 但是,除此之外,我们还要考虑安全性、性能、复杂度等问题。

例如安全性问题,rpc方案,也就是远程过程调用,它实际上是为网络通讯设计的,所以他是借助http协议进行传输的,需要考虑从端口被恶意占用等问题,并且作为一个进程间通信的需求,rpc确实复杂度稍高。 同时性能也是考虑的重点,如果有高并发的情况,则更需要考虑。

ipc方案推荐

最后,推荐一下,也算做个总结,思路就是我上面写的,我从github上选取了一个跨平台实现的ipc方案,具体我还没有测试过,但是搜过性能压测什么,都是没什么问题的,大家可以做参考!

grpc:google的方案,大公司保障:https://github.com/grpc/grpcRaftLib C++库,通过C++iostream类运算符进行流/数据流并发:https://github.com/RaftLib/RaftLib 参考资料

进程间的通信方式汇总 进程间通信(IPC)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3