Loading... # 共享内存 Windows 提供了一系列 API,可以用于实现进程间基于共享内存区来通信。过程大概如下: * 使用 CreateFileMapping 创建一个命名文件映像对象,并指定其大小、访问权限等 * 使用 MapViewOfFile 获得上述命名文件映射对象的一个映像视图,实际上就是一块 buf,可以直接操作读写数据 * 根据设计目的旺 View 里面写数据或读数据,这个过程要保证各进程间的同步,View 本身并不提供同步能力,一般可以使用 Event 或 Mutex 等来保证同步 * 最后通过 UnMapViewOfFile 来撤销 View 的映射 一般,各进程间都是通过约定共同名字的 FileMapping 和 Event、Mutex 等来实现的。、 共享内存区的效率非常高,因为本质上是一片物理地址在两个进程的虚拟空间中的两个虚拟地址映射。 # Demo [Demo](https://github.com/plu-s/IPC-FileMapping),一个简单的读者-写者示例。有一个读者,两个写者,写者完成后通过设置 Event 信号通知读者读数据,三个进程对 View 的互斥访问,通过 Mutex 实现。 ![Demo.png](http://47.117.131.13/usr/uploads/2021/07/1433037611.png) 最后修改:2021 年 07 月 13 日 12 : 04 AM © 允许规范转载