在Windows上以原子方式替换内存映射

时间:2012-01-29 08:58:32

标签: windows winapi concurrency shared-memory atomicity

有没有办法以原子方式替换Windows上的内存映射?

在Unix上,带有MAP_FIXED的mmap()将原子地替换在请求的地址处映射的页面。

但是在Windows上,如果页面已经映射到地址,则不能在地址上使用MapViewOfFileEx()。必须首先取消映射现有页面,例如使用UnmapViewOfFile()。这意味着地址未分配的时间很短,因此如果另一个线程同时创建内存映射,则可能会将其放在此地址。

Windows中是否存在可以解决此问题的界面,而无需修改内核?也许直接使用系统调用?

0 个答案:

没有答案