gpt4 book ai didi

c++ - 多次内存映射同一个文件?

转载 作者:可可西里 更新时间:2023-11-01 11:53:15 25 4
gpt4 key购买 nike

多次内存映射同一个文件有什么性能特点?操作系统会在映射之间重用/缓存还是会多次将文件读入内存的不同部分?

即如果我从两个不同的进程读取和写入内存映射文件,它会通过磁盘还是在内存中通信?如果我从两个不同的进程或线程读取内存映射文件,它们会从同一内存读取吗?

最佳答案

您可以使用 MAP_PRIVATE 来获取底层文件的私有(private)写时复制映射。您可以使用 MAP_SHARED 来查看底层文件。我不知道如果您同时在 MAP_PRIVATE 映射和 MAP_SHARED 映射中映射相同的区域会发生什么,但我怀疑写入任一映射都会导致复制。

为了与磁盘同步,您需要使用msync。在大多数系统上,多个 MAP_SHARED 映射将为您提供一 block 内存,名义上由磁盘支持,在进程之间共享。我不确定这种行为是指定的还是仅仅是典型实现的一个令人愉快的结果。

关于c++ - 多次内存映射同一个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24172861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com