【问题标题】:Windows CreateFileMapping : different file-mapping objects with same backed fileWindows CreateFileMapping:具有相同支持文件的不同文件映射对象
【发布时间】:2012-04-24 11:20:53
【问题描述】:

我知道我们可以使用文件映射在两个进程之间共享内容,但这需要相同的文件映射对象。

如果每个进程使用自己的文件句柄创建自己的文件映射对象,但每个文件句柄都指向同一个文件,会发生什么情况

谢谢 张

【问题讨论】:

  • 最后写的人会覆盖之前写的内容。

标签: c++ c windows shared-memory memory-mapping


【解决方案1】:

来自文档:

创建文件映射对象实际上并不将视图映射到进程地址空间。 MapViewOfFile 和 MapViewOfFileEx 函数将文件视图映射到进程地址空间。

除了一个重要的例外,由同一文件支持的任何文件映射对象派生的文件视图在特定时间是连贯的或相同的。一个进程内的视图和不同进程映射的视图的一致性得到保证。

异常与远程文件有关。尽管 CreateFileMapping 可以处理远程文件,但它并不能保持它们的一致性。例如,如果两台计算机都将文件映射为可写,并且都更改同一页面,则每台计算机只能看到自己对该页面的写入。当数据在磁盘上更新时,它不会被合并。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-05
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    相关资源
    最近更新 更多