c++ - 在boost中只写内存映射?

标签 c++ windows boost memory-mapped-files

为什么boost进程间不支持只写内存映射?

也许我遗漏了一些东西,但只写映射不会比读/写映射快得多,因为操作系统不必从磁盘读取页面,只需将页面从内存刷新到磁盘?此外,它还具有完全非阻塞的优势(冲洗和销毁除外)。

从 boost 切换到 native OS 内存映射对我有好处吗?

最佳答案

事实上,如果您分配一个大小为 20Gb 的新内存映射文件,您将获得该大小的稀疏文件分配。

当“映射到”该文件的页面时,需要进行读取操作(因为操作系统可能会判断该页面尚未实际存在于磁盘上),并且仅当(如果)这些页面是dirty 需要将它们写出来。

当然,这取决于实现,我不认为 POSIX(可以)保证这一点,但这不是 IYAM 的不合理行为,并且相当于只写映射。

关于c++ - 在boost中只写内存映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24352943/

相关文章:

php - 使用 Windows 的 SSH2 pecl 扩展编译 PHP 时出现问题

c++ - QT 5.7 MSVC 2015 静态构建不工作

c++ - 析构函数和python

c++ - 如何使用 MFC 在项目的所有对话框中访问变量?

c++ - Microsoft C++ 语言引用

windows - 使用SVN,我如何有选择地创建一个补丁文件?

c++ - boost read_xml 问题解析字符串?

c++ - boost 日志问题,版本 1.59

c++ - 库函数 objdump 输出

c++ - 如何在 Linux 上的 C++ 程序中使用 yaml-cpp?