多次映射同一个文件
Memory Mapping the same file multiple times?
多次映射同一个文件的内存性能特征是什么?操作系统是否会在映射之间重用/缓存,还是会多次读取文件到内存的不同部分?
。如果我从两个不同的进程读写一个内存映射文件,它会通过磁盘还是它们会在内存中通信?如果我从两个不同的进程或线程读取内存映射文件,它们会从相同的内存读取吗?
您可以使用MAP_PRIVATE
来获得底层文件的私有写时复制映射。您可以使用MAP_SHARED
来获得底层文件的视图。我不知道如果您同时在MAP_PRIVATE
映射和MAP_SHARED
映射中映射相同的区域会发生什么,但我怀疑写入任何映射都会导致副本。
为了与磁盘同步,您需要使用msync
。在大多数系统上,多个MAP_SHARED
映射将为您提供一块内存,名义上由磁盘支持,在进程之间共享。我不确定这种行为是指定的,还是仅仅是典型实现的一个愉快的结果。
它将使用文件缓存,因此假设机器中有足够的RAM,它应该缓存两个进程的写操作。当然,假设读取和写入实际上是在文件的同一区域…
相关文章:
- 是否可以在文本文件中找到最长单词的长度,并在同一个文本文件中读取,只需 1 个 while 循环?
- 不同C++文件中未命名命名空间中的名称可以引用同一个命名事物吗?
- 当 PHP、C++ 和 shell 脚本尝试访问同一个文件时,如何避免错误?
- 为什么 boost 文件系统和 libpq-fe 标头不会在同一个文件中编译
- 如何在同一个文件中写入C++
- fopen 和 fwrite 从多个线程到同一个文件
- 将静态和动态库链接到同一个可执行文件会导致哪些问题
- C "undefined reference",但我在同一个文件中指定了它
- DLL使用sqlite3从不同的进程写入同一个数据库文件
- 你能在同一个Cinder文件中发送和接收OSC数据吗
- 我可以允许多个程序同时从同一个文件中读取吗
- 如何检查文件指针/描述符/句柄是否关联到同一个文件/管道/终端
- IO:从一个C++程序和另一个Java程序同时写入和读取同一个文本文件
- 如何同时将 ASCII 和 BINARY 数据写入同一个文件
- C++内联函数的定义必须在同一个文件中
- 我可以在同一个.CPP文件中声明和定义静态类变量吗
- C++使用不同的流读取和写入同一个文件
- 两个进程打开同一个文件进行写入
- C++未定义的引用,尽管函数是在同一个文件中定义的
- 一遍又一遍地创建同一个文本文件