如何在.net中对MemoryMappedFiles使用x64 Interlocked Operations

时间:2014-09-23 10:27:41

标签: c# .net multithreading memory-mapped-files interlocked

我需要对.NET中的MemoryMappedFile内存使用Interlocked Operations(CompareExchange,Increment等)。

我发现这个answer是一个非常相似的问题。问题是Interlocked Operations不是从64位操作系统上的kernel32(或任何其他)dll导出的(参见例如http://blog.kalmbachnet.de/?postid=46)。

有没有其他方法可以在64位.NET进程中调用内存块上的互锁函数?

1 个答案:

答案 0 :(得分:1)

自己编写一个小型C ++ / CLI帮助程序库,它提供托管代码可以使用的互锁操作。

我认为最快的互操作路径是公开一个内部调用非托管函数的托管类,该函数本身可以用于互锁的内部函数。这样你甚至不必通过PInvoke。