标签: windows winapi concurrency shared-memory atomicity
有没有办法以原子方式替换Windows上的内存映射?
在Unix上,带有MAP_FIXED的mmap()将原子地替换在请求的地址处映射的页面。
但是在Windows上,如果页面已经映射到地址,则不能在地址上使用MapViewOfFileEx()。必须首先取消映射现有页面,例如使用UnmapViewOfFile()。这意味着地址未分配的时间很短,因此如果另一个线程同时创建内存映射,则可能会将其放在此地址。
Windows中是否存在可以解决此问题的界面,而无需修改内核?也许直接使用系统调用?