c++ - 同时写入内存和磁盘

标签 c++ c memory

我正在开发一个应用程序,该应用程序需要在内存中保留一定时间的数据(可配置)和另一时间 t2 的数据在磁盘上的持久存储中.这背后的原因是,经常询问的数据将存储在内存中并更快地检索,而较旧的、不常用的用户数据将存储在磁盘上并可检索。

问题是:我不能简单地写入内存,然后在 t 时间后将内存缓冲区的全部内容复制到磁盘,就好像应用程序崩溃一样,最近的数据存储在内存中会迷路。因此,每次收到新数据时,我都需要将其同时存储在内存和磁盘上。

我的问题是,有没有一种有效的方法可以将内存中的缓冲区镜像到磁盘的一部分?我正在寻找一种比写入内存然后在每次数据更新时写入磁盘更有效的方法。

最佳答案

你可以对文件进行内存映射,unix和windows系统都支持(但API不同)。之后,您只需写入该内存位置,并在需要时进行同步。

关于c++ - 同时写入内存和磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13073294/

相关文章:

c++ - 我可以从命令行编写和编译所有类型的 Visual Studio 应用程序吗?

android - 移动设备上的 Speex 抖动缓冲器

c++ - C 重载与否?

c++ - 简单 C++ 程序中的堆损坏

C - 使用 memcpy 直接从内存中复制

iPhone Objective C内存分配

c++ - 代码片段的时间复杂度是O(k*n^2)吗?

c++ - 如何将对象添加到类中的静态 vector

c++ - Netbeans 7.1.1 中的 boost

c - 是否有 sizeof(size_t) > sizeof(off_t) 的 POSIX 实现?