两种共享内存读写的效率问题

哈大哈傻瓜 发布于 2016/02/26 15:28
阅读 1K+
收藏 1

假如我有30个数据块要写入共享内存,然后另一个进程再从共享内存读出,因为某些原因,

这个程序需要比较高的性能要求,那我在以下两种做法中有些疑问:

(1)创建30块共享内存,然后另一进程根据顺序读出数据;

(2)创建一块大的共享内存,然后另一进程根据顺序读出数据

运行系统环境是WINDOWS 7,那操作系统在不同共享内存寻址开销比较大还是程序本身在同一块共享内存里的寻址开销比较大呢。

这两种做法在速度上会有差异吗,如果有的话那种会比较快呢,

另外还有一个问题,网上很不好找,WINDOWS的创建共享内存函数CreateFileMapping,仅仅是通过命名来区别的吗,不同共享内存都从0地址起始没有问题吗?

加载中
0
changnet
changnet

文件映射到内存都是通过文件名来区别的。本身它就是一个文件,只是在内存上而已。linux下也是如此。每个文件映射到内存后,地址是从0开始的,因为这是相对地址,好比读文件时每个都从0开始。映射成功后,寻址速度跟访问你程序里的变量速度是一样的,这个开销不用考虑。你要考虑的是两个进程间怎么做同步,这才是问题。

哈大哈傻瓜
哈大哈傻瓜
很完美的回答! 我做的是一边录音一边压缩编码, 同步问题取决于编码库的效率,也比较苦恼, 不过这个疑虑就消除了,再次感谢!
返回顶部
顶部