帝王在线 发表于 2006-03-06 09:31

请问哪为能推荐点linux下共享内存和windows下内存映射文件的可移植性开发的资料!

请问哪为能推荐点linux下共享内存和windows下内存映射文件的跨平台可移植性开发的资料!
在下谢谢了,我想写一份跨平台代码,只做最少的代码改动,在windows下和linux下实现内存共享,但似乎两者的可通性并非很好,现在我的想法是linux下用共享内存,windows下用内存映射文件,但两者的差异感觉太大。

还有,windowsXP/03支持posix共享内存么?还有就是稳定性和效率怎样?

albcamus 发表于 2006-03-06 12:50

都用mmap不行吗? 不懂Win。

uniware 发表于 2006-03-08 22:38

回复 1楼 帝王在线 的帖子

Use shmem on UNIX and write a wrapper for MapViewOfFile/... on Windows.

wolf0403 发表于 2006-03-09 20:21

不清楚 Win32 中指定 HANDLE_INVALID 得到的匿名内存映射文件是如何操作的。。。Linux 下的 mmap 可以用 MAP_SHARED | MAP_ANONYMOUS 创建父子进程共享的内存区域。

帝王在线 发表于 2006-03-09 21:02

windows里下使用内存映射文件(好象没有共享内存),而linux下是共享内存,我想的是把两者的操作封装成一样的,实现windows/linux下的代码跨平台,不知道哪里有这方面的文章。

帝王在线 发表于 2006-03-09 21:10

是这样的,我写一个程序,需要在两个进程之间共享大量数据,一个进程进行数据的读写操作,一个进行需要对数据进行随机查询读取,数据量大、操作频繁、并且涉及复杂的检索算法,因此管道/消息/socket等等都不适合做,我想来想去,只能用共享内存(linux)/内存映射文件(win),我找不到windows下关于共享内存的任何资料,所以怀疑windows可能不支持posix在共享内存方面的定义。
因此,我的考虑是,在windows下使用内存映射文件做数据的共享,而在linux使用共享内存实现,但两者的处理差别还是比较大的,所以我要考虑进行封装,以保证我的代码在linux/windows下的一致性,现在就是缺少这方面的资料。

wolf0403 发表于 2006-03-10 14:44

Windows 确实没有 SysV shm 的对应物。当CreateFileMapping 的第一个文件句柄为 INVALID_HANDLE 的时候,共享页面将从交换空间中映射。
同样,Linux 系统中 mmap 指定 MAP_ANONYMOUS 的时候系统将从交换空间映射

guov100 发表于 2015-04-14 11:18

请问,你实现了这个功能了吗?我也在做这方面的项目,请不吝赐教!多谢。QQ:294217515回复 6# 帝王在线


   

guov100 发表于 2015-04-14 11:19

请问,你实现了这个功能了吗?我也在做这方面的项目,请不吝赐教!多谢。QQ:294217515帝王在线 发表于 2006-03-09 21:10 static/image/common/back.gif
是这样的,我写一个程序,需要在两个进程之间共享大量数据,一个进程进行数据的读写操作,一个进行需要对数 ...
页: [1]
查看完整版本: 请问哪为能推荐点linux下共享内存和windows下内存映射文件的可移植性开发的资料!