关于内存映射文件的一点小问题?

LEONARD0824 2006-03-03 11:43:33
我想制作两个线程,一个负责采集数据,并向数据文件中增加采集到的数据;另一个线程负责读取用户想看到某个时间段内的采样数据。请问,用内存映射文件是最好的办法么? 还是直接用内存缓冲的方法?
...全文
102 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Oversense 2006-03-08
  • 打赏
  • 举报
回复
filemap 太大也会出问题
mythay 2006-03-08
  • 打赏
  • 举报
回复
直接缓冲的好。
如果你有以下得情况,建议你是用内存映射
1.内存巨大。
2.稀疏数据。比如大小为10000的数组,存在有效数据的一般只有其中的2 、30个。
3.访问随机性不大。如果数据访问的随机性大,页面调入调出也需要占cpu时间。
如果不是一次全部映射,要设计一种算法以使访问效率最高。
虚拟内存至少要少一半得说法是不对的,具体原因参照《核心编程〉
LEONARD0824 2006-03-08
  • 打赏
  • 举报
回复
如果大的话,照babam的说法,我肯定要用filemapping,这样使用的虚拟内存至少要少一半,是么
babam 2006-03-07
  • 打赏
  • 举报
回复
看你的数量级了.
上g的话就filemapping好了
开的都是虚拟内存.没有什么太大关系.
LEONARD0824 2006-03-07
  • 打赏
  • 举报
回复
按理说,应该不会增大的.
LEONARD0824 2006-03-06
  • 打赏
  • 举报
回复
那我想问一下,随着文件的不断增大,我的程序使用的内存是不是也是越来越大?
gnixemos 2006-03-06
  • 打赏
  • 举报
回复
的时间不会随着文件的增大而增大

LEONARD0824 2006-03-03
  • 打赏
  • 举报
回复
对阿 ,filemapping有这个问题,要预先定义一个比较大的值,最后对hfile进行截断。

我想问一点,用createfile得到的hfile句柄向文件写相同大小数据的时间会不会随着文件的增大而增大?

读取文件相同大小数据的时间呢?
hollysky 2006-03-03
  • 打赏
  • 举报
回复
FileMapping 在两个进程间共享大的数据的确很好,如果你是在同一个进程里的两条线程,就不必了。
另外,File的尺寸可以改变, FileMapping 的尺寸不可改变。

15,471

社区成员

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

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