Cha*_*ang 1 c c++ windows shared-memory memory-mapping
我知道我们可以使用文件映射在两个进程之间共享内容,但这需要相同的文件映射对象.
会发生什么,如果每个进程都有自己的文件句柄创建其自己的文件映射对象,但每个文件句柄指向同一个文件?
谢谢张
来自文档:
创建文件映射对象实际上并不将视图映射到进程地址空间.MapViewOfFile和MapViewOfFileEx函数将文件视图映射到进程地址空间.
有一个重要的例外,从同一文件支持的任何文件映射对象派生的文件视图在特定时间是一致的或相同的.对于进程内的视图和由不同进程映射的视图,可以保证一致性.
该例外与远程文件有关.尽管CreateFileMapping可以与远程文件一起使用,但它并不能保持连贯性.例如,如果两台计算机都将文件映射为可写,并且两者都更改了同一页面,则每台计算机只能看到自己对该页面的写入.当数据在磁盘上更新时,它不会合并.