从另一个进程读取未刷新的页面
我有一个生产者进程,用于写入 mmap 文件和一个从该文件读取的消费者进程。这是在 Linux 上。
如果生产者对 mmap 进行了更改并且没有立即刷新,那么当消费者访问它时会发生什么?它会从磁盘中获取旧版本,还是足够聪明地获取未刷新的页面?
I have a producer process, that writes to a mmap'd file and a consumer process that reads from it. This is on Linux.
If the producer makes a change to the mmap and its not instantly flushed, when the consumer access it what happens? Will it get the old version from the disk, or is it clever enough to get the unflushed page?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
从
mmap()
手册页:底线:如果您在调用
mmap()
时指定,则其他进程将立即看到更改。根据文档,您必须使用MAP_SHARED
或MAP_PRIVATE
,它们控制映射同一文件区域的其他进程的行为。From the
mmap()
manual page:Bottom line: changes will be immediately visible to other processes if you specify so when calling
mmap()
. According to the documentation you have to use eitherMAP_SHARED
orMAP_PRIVATE
, which controls the behaviour with regard to other processes mapping the same file area.