【发布时间】:2012-10-25 16:42:18
【问题描述】:
我正在开发一个应用程序,该应用程序需要在内存中保留一定时间 t 的数据(可配置),并在磁盘上的持久存储中保留另一时间 t2 的数据.这背后的原因是,经常询问的数据将存储在内存中并更快地检索,而较旧的、不经常使用的用户数据将存储在磁盘上并可以检索。
问题是:我不能简单地写入内存,然后在时间 t 之后将内存缓冲区的全部内容复制到磁盘,就像应用程序崩溃一样,最近的数据存储在内存中会迷路。因此,每次收到新数据时,我都需要将其同时存储在内存和磁盘中。
我的问题是,有没有一种有效的方法将内存中的缓冲区镜像到磁盘的一部分?我正在寻找一种比在每次数据更新时先写入内存然后写入磁盘更有效的方法。
【问题讨论】:
-
mmap() 应该是你的朋友,我相信:en.wikipedia.org/wiki/Mmap 这适用于 POSIX 系统(例如 Linux 和 Mac。)如果你在 Windows 上,MapViewOfFile 应该提供类似的功能:@987654322 @
-
@Nikos Chantziaras:如果我在 amiga 上呢?
-
您是只担心应用程序崩溃(操作系统缓冲区仍然有效),还是计算机崩溃?
-
谢谢@Nikos Chantziaras - 正是我需要的。
-
"如果应用程序崩溃,存储在内存中的最新数据将会丢失。"没有解决办法