【并发编程四】c++进程通信——共享内存(shared memmory)

一、共享内存(shared memmory)
消息队列的读取和写⼊的过程,都会有发⽣⽤户态与内核态之间的消息拷⻉过程。那共享内存的⽅式,就很好的解决了这⼀问题。
现代操作系统,对于内存管理,采⽤的是虚拟内存技术,也就是每个进程都有⾃⼰独⽴的虚拟内存空间,不同进程的虚拟内存映射到不同的物理内存中。所以,即使进程 A中 和 进程 B中 的虚拟地址是⼀样的,其实访问的是不同的物理内存地址,对于数据的增删查改互不影响。
共享内存的机制,就是拿出⼀块虚拟地址空间来,映射到相同的物理内存中。这样这个进程写⼊的东⻄,另外⼀个进程⻢上就能看到了,都不需要拷⻉来拷⻉去,传来传去,⼤⼤提⾼了进程间通信的速度。
二、共享内存的过程

我们以进程processA写,processB写为例,讲述下共享内存的过程
1、processA 写入共享内存
- CreateFileMapping: 创建命名的内存映
本文详细介绍了C++中的共享内存机制,包括如何创建和使用共享内存进行进程间的通信。通过CreateFileMapping和MapViewOfFile等函数,实现进程A写入和进程B读取共享内存。虽然共享内存能大幅提升通信效率,但同时也可能导致数据冲突,需要引入信号量进行资源保护。文章提供代码示例并简要讨论了共享内存的问题。
订阅专栏 解锁全文
8161

被折叠的 条评论
为什么被折叠?



