现在有三个进程,可能都要从数据库中读取同一份文件,大家都知道这个原理,先从硬盘上读取数据,然后放入内存中,再读取内存中的数据!
但是现在这个数据可能很大,会造成内存不足,我的目的就是通过文件映射再创建一块虚拟内存的方法,把这三个进程的可能都要访问到的数据先放入这个虚拟内存中,同时就可以读取这些数据了。
比如说吧,有一个很大的二维或者三维数组,有三个函数要对它进行访问,可是每次都可能要把这个数组都放入内存中,现在就是把这个数组给放在虚存中了,每次读都读虚存里的数据就可以了!请大家给些好的方法,或者一些可行的代码。谢谢。分不够再给。这是一个很挑战性的工作,希望每个人都能留下一点意见。
但是现在这个数据可能很大,会造成内存不足,我的目的就是通过文件映射再创建一块虚拟内存的方法,把这三个进程的可能都要访问到的数据先放入这个虚拟内存中,同时就可以读取这些数据了。
比如说吧,有一个很大的二维或者三维数组,有三个函数要对它进行访问,可是每次都可能要把这个数组都放入内存中,现在就是把这个数组给放在虚存中了,每次读都读虚存里的数据就可以了!请大家给些好的方法,或者一些可行的代码。谢谢。分不够再给。这是一个很挑战性的工作,希望每个人都能留下一点意见。
解决方案 »
- vc6.0 List control问题
- 一个线程多次打开,再关闭再打开
- 想求一个获取网页源代码的例子~·
- 多文档程序中,如何才能使得其它已打开的文档都隐藏,只显示框架。
- 我现在从一个硬件设备里读取mpeg4的码流,怎么把这码流播放出来?
- 高手请进!!关于程序自杀的这段代码,如何用于DLL?
- 急请教:如何将一动态影像(连续)转换为象雷达扫描线一样的图像数据。酬谢(请看详细描述)?
- 怎样在DHTML中以window.external.method() 的形式调用C++方法?
- 一个关于窗口的特奇怪的问题?
- 请问如何获取Dialog中某个控件的坐标?请指教,谢谢!!
- ATL3.0用_Module.m_hInst求HINSTANCE,在ATL7.0中该怎么办?
- 请高手帮忙,100分等你拿!
HANDLE hFile = CreateFile(...);
HANDLE hMap = CreateFileMapping(...);
LPVOID ptr = MapViewOfFile(...);
Windows 2003不知道。所以我们要64位OS.这样我们就不必外硬盘上自己倒了。
HFILE WINAPI OpenFile(LPCSTR lpFileName,LPOFSTRUCT lpReOpenBuff,UINT uStyle);
可以这样调用
HFILE hfile;
OFSTRUCT of;
hfile=OpenFile("File.dat",&of,OF_READ|OF_SHARE_EXCLUSIVE);
if(hfile==-1)
{//Error}
还有一个
HFILE hfile;
hfile=CreateFile(achFile,//Filename
GENERIC_READ,//Access mode
0,//Share
0,//Security
OPEN_EXISTING,//Create flags
FILE_ATTRIBUTE_NORMAL,//File attributes
0);//File emulate
if(hfile==-1)
{//Error}
第二步:创建文件映射对象
HANDLE hfm;
hfm=CreateFileMapping(hfile,
0,//Security Ptr
PAGE_READONLY,//Pg protection
0,//Size of high 32 bits
dwFileSize,//Size of low 32 bits
0);Mapping name
共享单一文件映象的方式之一是给这个文件映象起一个名称,然后当两个或多个进程用同一个名称调用CreateFileMapping时,就可以共享