windows - 文件的内存映射与 CreateFile/ReadFile

标签 windows winapi memory-mapped-files

<分区>

与使用 CreateFile ReadFile 组合读取(常规大小的文件)相比,使用内存映射文件读取(常规大小的文件)有什么缺点(如果有的话)?

最佳答案

有了 ReadFile/WriteFile,你就有了确定性的错误处理语义。当您使用内存映射文件时,会通过抛出异常来返回错误。

此外,如果内存映射文件必须命中磁盘(或更糟糕的是,网络),您的内存读取可能需要几秒钟(甚至几分钟)才能完成。根据您的应用程序,这可能会导致意外停顿。

如果您使用 ReadFile/WriteFile,则可以使用 API 的异步变体来控制此行为。

如果您使用 ReadFile,您还会获得更确定的性能,特别是如果您的 I/O 模式是可预测的 - 内存映射 I/O 通常是随机的,而 ReadFile 几乎总是串行的(因为 ReadFile 在当前文件位置读取并前进当前文件位置)。

关于windows - 文件的内存映射与 CreateFile/ReadFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/641614/

相关文章:

delphi - 文件映射复制更快?

windows - docker : Hyper-V was unable to find a virtual switch with name "DockerNAT"

C++ 读取和编辑位图图像的像素

c++ - 楼主绘制的任务栏缩略图预览

winapi - XP 通用控制 list : processorArchitecture ='x86' vs. 处理器架构 ='*'

macos - Mac OS 有办法创建匿名文件映射吗?

c++ - 内存分配 - Arduino

windows - 在批处理脚本之后继续使用 CMD 命令

c - 未解析的外部符号 _malloc

windows - 如何使用 EnableWindow() 禁用窗口并将其灰显?