C++跨平台(三):进程间通讯(IPC)的技术选型 |
您所在的位置:网站首页 › c语言线程间通信 › C++跨平台(三):进程间通讯(IPC)的技术选型 |
本系列继续记录,作为一个新人小白,在第一次接触C++跨平台(win、linux、mac)开发的经验和踩坑。 前言在四个月前,我还是一名学生,开发一个功能,我的需求就是能跑就行,最多加一个没有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 |