文章目录
- 一、共享内存
- 1、共享内存的原理
- 2、共享内存的实现
- 三、消息队列
- 1、消息队列原理
- 2、消息队列实现
一、共享内存
1、共享内存的原理
共享内存为多个进程之间共享和传递数据提供了一种有效的方式。共享内存是先在物理内存上申请一块空间,多个进程可以将其映射到自己的虚拟地址空间中。所有进程都可以访问共享内存中的地址,就好像它们是由 malloc 分配的一样。如果某个进程向共享内存写入了数据,所做的改动将立刻被可以访问同一段共享内存的任何其他进程看到。由于它并未提供同步机制,所以我们通常需要用其他的机制来同步对共享内存的访问。
总结:多个进程在物理内存上,有一份内存空间是共享的,多个进程在各自的逻辑地址空间写入数据,或者获取数据,使用同一个空间,不需要数据的拷贝。
2、共享内存的实现
共享内存基本操作函数
shmget 创建、获取
shmat 映射
shmdt 断开映射
shmctl 删除共享内存
1.a.c向共享内存中写入数据
2.b.c向共享内存中读入数据
3.sem.h 引入信号量
4.sem.c 文件
三、消息队列
1、消息队列原理
自身就带有同步机制的有:消息队列、管道
2、消息队列实现
a.c文件向消息队列发送数据
b.c向消息队列读取数据