免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3396 | 回复: 6
打印 上一主题 下一主题

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-06 09:31 |只看该作者 |倒序浏览
请问哪为能推荐点linux下共享内存和windows下内存映射文件的跨平台可移植性开发的资料!
在下谢谢了,我想写一份跨平台代码,只做最少的代码改动,在windows下和linux下实现内存共享,但似乎两者的可通性并非很好,现在我的想法是linux下用共享内存,windows下用内存映射文件,但两者的差异感觉太大。

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

论坛徽章:
0
2 [报告]
发表于 2006-03-06 12:50 |只看该作者
都用mmap不行吗? 不懂Win。

论坛徽章:
0
3 [报告]
发表于 2006-03-08 22:38 |只看该作者

回复 1楼 帝王在线 的帖子

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

论坛徽章:
0
4 [报告]
发表于 2006-03-09 20:21 |只看该作者
不清楚 Win32 中指定 HANDLE_INVALID 得到的匿名内存映射文件是如何操作的。。。Linux 下的 mmap 可以用 MAP_SHARED | MAP_ANONYMOUS 创建父子进程共享的内存区域。

论坛徽章:
0
5 [报告]
发表于 2006-03-09 21:02 |只看该作者
windows里下使用内存映射文件(好象没有共享内存),而linux下是共享内存,我想的是把两者的操作封装成一样的,实现windows/linux下的代码跨平台,不知道哪里有这方面的文章。

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

论坛徽章:
0
7 [报告]
发表于 2006-03-10 14:44 |只看该作者
Windows 确实没有 SysV shm 的对应物。当CreateFileMapping 的第一个文件句柄为 INVALID_HANDLE 的时候,共享页面将从交换空间中映射。
同样,Linux 系统中 mmap 指定 MAP_ANONYMOUS 的时候系统将从交换空间映射
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP