我需要对.NET中的MemoryMappedFile
内存使用Interlocked Operations(CompareExchange,Increment等)。
我发现这个answer是一个非常相似的问题。问题是Interlocked Operations不是从64位操作系统上的kernel32(或任何其他)dll导出的(参见例如http://blog.kalmbachnet.de/?postid=46)。
有没有其他方法可以在64位.NET进程中调用内存块上的互锁函数?
答案 0 :(得分:1)
自己编写一个小型C ++ / CLI帮助程序库,它提供托管代码可以使用的互锁操作。
我认为最快的互操作路径是公开一个内部调用非托管函数的托管类,该函数本身可以用于互锁的内部函数。这样你甚至不必通过PInvoke。