关于内存映射文件的一点小问题?
我想制作两个线程,一个负责采集数据,并向数据文件中增加采集到的数据;另一个线程负责读取用户想看到某个时间段内的采样数据。请问,用内存映射文件是最好的办法么? 还是直接用内存缓冲的方法? 问题点数:20、回复次数:9Top
1 楼hollysky(爱神)回复于 2006-03-03 14:40:07 得分 0
FileMapping 在两个进程间共享大的数据的确很好,如果你是在同一个进程里的两条线程,就不必了。
另外,File的尺寸可以改变, FileMapping 的尺寸不可改变。Top
2 楼LEONARD0824()回复于 2006-03-03 17:09:35 得分 0
对阿 ,filemapping有这个问题,要预先定义一个比较大的值,最后对hfile进行截断。
我想问一点,用createfile得到的hfile句柄向文件写相同大小数据的时间会不会随着文件的增大而增大?
读取文件相同大小数据的时间呢?Top
3 楼somexing(somexing)回复于 2006-03-06 08:42:35 得分 0
的时间不会随着文件的增大而增大
Top
4 楼LEONARD0824()回复于 2006-03-06 08:58:30 得分 0
那我想问一下,随着文件的不断增大,我的程序使用的内存是不是也是越来越大?Top
5 楼LEONARD0824()回复于 2006-03-07 15:24:38 得分 0
按理说,应该不会增大的.Top
6 楼babam()回复于 2006-03-07 18:02:19 得分 0
看你的数量级了.
上g的话就filemapping好了
开的都是虚拟内存.没有什么太大关系.Top
7 楼LEONARD0824()回复于 2006-03-08 14:34:04 得分 0
如果大的话,照babam的说法,我肯定要用filemapping,这样使用的虚拟内存至少要少一半,是么Top
8 楼mythay(小黑)回复于 2006-03-08 16:18:34 得分 0
直接缓冲的好。
如果你有以下得情况,建议你是用内存映射
1.内存巨大。
2.稀疏数据。比如大小为10000的数组,存在有效数据的一般只有其中的2 、30个。
3.访问随机性不大。如果数据访问的随机性大,页面调入调出也需要占cpu时间。
如果不是一次全部映射,要设计一种算法以使访问效率最高。
虚拟内存至少要少一半得说法是不对的,具体原因参照《核心编程〉Top
9 楼Oversense(步步文)回复于 2006-03-08 16:38:25 得分 0
filemap 太大也会出问题Top




