linux下最快的进程间通信方式共享

共享内存是一种允许多个进程直接共享数据的内存区域,避免了用户态到内核态的数据拷贝,因此是最快的进程间通信方式。使用步骤包括创建、映射、操作内存和解除映射。在实际应用中需要注意,只有所有进程解除映射后,共享内存才会被删除。

什么是共享内存

共享内存 是多个进程都可以共享访问的一段内存区域。通过指针指向这个内存区域,一旦有一个进程把该指针所指向内容修改,其他同指向的进程也会感知到这个改变。

问什么说共享内存是最快的进程间通信方式

因为共享内存是直接将一块内存区域映射到虚拟地址空间中,因此在数据通信传输的过程中,相比较其他的通信方式少了将数据从用户态到内核态的数据拷贝过程。
什么意思,就是说这种通信方式,已经把数据拿到了地址空间,再取数据不需要再涉及到内核,不涉及执行进入内核的系统调用 来传递数据。
在这里插入图片描述

共享内存使用步骤

1.创建共享内存

#include<sys/ipc.h>
#include<sys/shm.h>
int shmget(key_t key,size_t size,int shmflg);
//参数:key是共享内存段名字,进程间通信的标识符,和我们消息队列定义的一样。需要自己define 定义
//size 是共享内存的大小
//shmflg是创建权限,共九种,类似于创建文件时的mode权限
//返回值:成功返回一个非负整数是操作句柄,失败返回-1

2.将共享内存映射到虚拟地址空间

#include<sys/types.h>
#include<sys/shm.h>
void * shmat (int shmid, const void * shmaddr, int shmflg);
//参数:shmid 是shmget返回的操作句柄,
//shmaddr 是映射第起始地址,如果参数给NULL则系统分配
//shmflg 是权限只读、只写、读写等,系统给出类一些宏定义,比如SHM_PDONLY 表示只读,无标志标识读写
SHM
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值