高分求助:如何在程序间共享大量内存数据

lide19 2004-05-08 05:22:55
我现在要做2个程序,一个程序负责把大文件读到内存生成一块区域。我们的机器内存很大按GB计。该程序一直运行。
另外一个程序访问上个程序创建的内存区域。根据这些数据该程序对输入的文件操作并输出结果。
问高手如何实现?我用VC6 或VC.net
我知道 Win32有 内存映射文件方法共享内存,但是好像要是一个程序的2个实例。是否这样?该方法还有哪些限制?如果是不同程序间共享,有其他方法吗?
多谢UP者,送1分!
...全文
68 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lide19 2004-06-10
  • 打赏
  • 举报
回复
感谢各位
lide19 2004-05-11
  • 打赏
  • 举报
回复
IPC好像只是在unix linux下使用,我用.net能用吗?贴个例子看看。
mzg3 2004-05-10
  • 打赏
  • 举报
回复
up
halk 2004-05-09
  • 打赏
  • 举报
回复
1. 我以为最好还是不用对象(类实例),而用缓冲区。当然,如果对象只包含数据成员(int, char等基本数据类型,非对象非数组),或者你只对其中的数据成员感兴趣,还是可以的。
2. 不必。MapViewOfFile后得到映射的指针,然后你要访问的地址偏移量是多少,就直接定位到那里就行了。
li_zero 2004-05-09
  • 打赏
  • 举报
回复
对象的存取,需要实现相应的方法,就好像要把一个对象存储到文件里,然后再读出这个信息并根据此创建新的对象,类似Serialize方法
li_zero 2004-05-09
  • 打赏
  • 举报
回复
关注
baoyuhua 2004-05-09
  • 打赏
  • 举报
回复
又学到不少东西
ymbymb 2004-05-09
  • 打赏
  • 举报
回复
参考下面链接,
http://expert.csdn.net/Expert/topic/2992/2992748.xml?temp=.8207056
调用CreateFile时,如果文件名为NULL, 则在内存里创建文件映射对象,效率不错!
fzd999 2004-05-09
  • 打赏
  • 举报
回复
实现共享内存,其实并没有什么特别的限制,关键在于两个进程之间的权限整合。
这么说,假如创建共享内存文件的程序是Service权限,而一个运行在user权限下的进程就不可能去打开这个内存文件。这个问题可以通过改写DACL实现,不过比较复杂。
new021 2004-05-09
  • 打赏
  • 举报
回复
可以使用IPC中的共享内存的方法
lide19 2004-05-08
  • 打赏
  • 举报
回复
那么这么说来: 共享对象 几乎就不可能了。我只能把数据按照一维数组或指针分段存入。然后程序建立的对象封装对共享区域的指针的操作。是这样吗?
此外,还有一个问题,如果从共享区域读出,每次我都要从头开始读还是可以从中间任意指针位置随意读取? 我想我应该可以保存这些分段区域的指针位置吧,然后我就可以直接从该指针向后读了。对吗?
halk 2004-05-08
  • 打赏
  • 举报
回复
CreateFileMapping得到映射对象句柄后,
MapViewOfFile得到共享区域的指针,读/写就用这个指针就行了。strcpy memcpy什么的都可以使用。
写入对象似乎不妥。对象中的方法对应的代码,在不同的进程中可能处在不同的区域,即便共享了对象也不一定都能正确调用其中的方法。
lide19 2004-05-08
  • 打赏
  • 举报
回复
请问二位大侠你们向内存映射文件写入和读取一般用什么函数? 我想把几个类的对象写入,然后另外一个程序调用读出。这样频繁读取是否会效率慢。不能直接就在内存映射文件内存中直接创建对象吗?
NowCan 2004-05-08
  • 打赏
  • 举报
回复
没有2个实例的问题。
一个程序用CreateFileMapping创建FileMapping,用MapViewOfFile得到内存地址,另一个程序再用这个函数时就能得到前面创建的FileMapping了。然后用MapViewOfFile就可以得到内存地址了。
guoj1997 2004-05-08
  • 打赏
  • 举报
回复
使用内存映射文件
CreateFile
CreateFileMapping
MapViewOfFile

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧