提问人:da capo 提问时间:11/8/2023 更新时间:11/8/2023 访问量:13
带有MAP_PRIVATE的 mmap 区域如何处理常规文件?
How do mmap region with MAP_PRIVATE work with a regular file?
问:
前提:适用于 Linux。无需考虑多处理。只关心同一进程中的多线程处理,并与映射到磁盘上特定文件的 mmap 区域进行交互,并将标志设置为 和 。MAP_PRIVATE
PROT_READ
PROT_WRITE
问题:
如果一个线程修改了映射区域中的数据,其他线程可以立即看到修改的结果吗?
与“将新值存储在堆上分配的内存中,用于写入磁盘,然后使用 mmap 区域查看修改结果”相比,修改 mmap 区域上的内容,然后使用同步到磁盘效率更高,还是更糟?
fwrite
MAP_SHARED
MAP_PRIVATE
fwrite
虽然 man 文档对“未指定 mmap() 调用后对文件所做的更改是否在映射区域中可见”有如下描述,但如果磁盘文件以问题 2 的方式被修改,即使磁盘文件被修改并在该区域被调用,是否能保证修改后的内容会被访问?
MAP_PRIVATE
madvise(MADV_DONTNEED)
背景:
- 已经读过mmap的人了。
- 我知道正常的使用方式是使用 file 和 .
MAP_SHARED
MAP_PRIVATE
MAP_ANONYMOUS
- 已经在 stackoverflow 上检查了相关问题。
答: 暂无答案
评论