我正在尝试在Windows上使用虚拟内存镜像实现环形缓冲区,以便应用程序可以访问跨越包装点的段作为连续内存。
Windows ring buffer without copying
描述了如何使用Windows API实现它(我已经有了Linux / POSIX实现)。
但是,根据its documentation,MapViewOfFileEx
无法保证正常工作,因为映射后lpBaseAddress
可能会变得不安全:
虽然可以指定一个现在安全的地址(操作系统不使用),但无法保证该地址会随着时间的推移保持安全。
何时会发生地址变得“不安全”,以及如何防止这种情况?