Linux 进程通信-共享内存Shmem示例

linux系统共享内存是进程间共享数据最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。

共享内存由shmget、shmat、shmdt、shmctl四个函数组成。具体使用说明,可以请教男人:

  • man shmget
  • man shmat
  • man shmdt
  • man shmctl
shmget(key_t key, size_t size, int shmflg)

参数1是key用来标记被共享的内存区域的名称,因此linux的共享内存是有名共享内存。shmget缺点是没有提供同步机制。
Demo代码连接

安卓系统在linux共享内存的基础上定制开发出了匿名共享内存Ashmem(Anonymous Shared Memory)它保留了linux共享内存通信效率高的优势,主要用在进程间需要传输大数据的场景,比如:

  • audio系统传输音频数据
  • app和Surfaceflinger之间传输帧数据。
  1. Ashmem为什么叫做匿名共享内存?
  2. Ashmem怎样解决同步问题的?
  3. Ashmem是否基于Linux Shmem?

带着问题,保持冷静,RTFSC。
Ashmem代码目录在/kernel/drivers/staging/android/ashmmem.c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值