<分区>
与使用 CreateFile ReadFile 组合读取(常规大小的文件)相比,使用内存映射文件读取(常规大小的文件)有什么缺点(如果有的话)?
<分区>
与使用 CreateFile ReadFile 组合读取(常规大小的文件)相比,使用内存映射文件读取(常规大小的文件)有什么缺点(如果有的话)?
最佳答案
有了 ReadFile/WriteFile,你就有了确定性的错误处理语义。当您使用内存映射文件时,会通过抛出异常来返回错误。
此外,如果内存映射文件必须命中磁盘(或更糟糕的是,网络),您的内存读取可能需要几秒钟(甚至几分钟)才能完成。根据您的应用程序,这可能会导致意外停顿。
如果您使用 ReadFile/WriteFile,则可以使用 API 的异步变体来控制此行为。
如果您使用 ReadFile,您还会获得更确定的性能,特别是如果您的 I/O 模式是可预测的 - 内存映射 I/O 通常是随机的,而 ReadFile 几乎总是串行的(因为 ReadFile 在当前文件位置读取并前进当前文件位置)。
关于windows - 文件的内存映射与 CreateFile/ReadFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/641614/