加载中...

共享内存是把同一块物理内存同时映射到多个进程地址空间的进程间通信(IPC)方式。数据写入后其他进程立即可见,无需内核中转拷贝,是速度最快的 IPC 手段。
主流接口有三类:System V 的 shmget/shmat 系列(历史最久);POSIX 的 shm_open 加 mmap(现代推荐,基于 /dev/shm 的 tmpfs);以及直接对文件做 MAP_SHARED 的 mmap 映射。Linux 还提供 memfd_create 创建匿名共享内存文件描述符。
共享内存本身不提供任何同步,并发读写必须配合信号量、futex 或放置在共享内存中的原子变量与无锁结构,否则会产生数据竞争。
数据库(如 PostgreSQL 的共享缓冲区)、高性能消息队列、多进程服务器、图形系统(Wayland 的共享缓冲)等对延迟敏感的场景广泛使用共享内存。

登录 后参与讨论
暂无讨论,来发表第一条评论吧