我需要在.NET中的MemoryMappedFile
中使用Interlocked操作(CompareExchange,Increment等)来访问内存。
我找到了一个非常相似问题的答案。问题在于,在64位操作系统上,并没有从kernel32(或任何其他)dll导出Interlocked操作(请参见例如http://blog.kalmbachnet.de/?postid=46)。
是否有其他方法可以在64位.NET进程中调用Interlocked函数来处理一块内存?
我需要在.NET中的MemoryMappedFile
中使用Interlocked操作(CompareExchange,Increment等)来访问内存。
我找到了一个非常相似问题的答案。问题在于,在64位操作系统上,并没有从kernel32(或任何其他)dll导出Interlocked操作(请参见例如http://blog.kalmbachnet.de/?postid=46)。
是否有其他方法可以在64位.NET进程中调用Interlocked函数来处理一块内存?
请为自己编写一个小的C++/CLI辅助库,提供可由托管代码使用的交错操作。
我认为最快的Interop路径是公开一个托管类,该类在内部调用一个未管理的函数,该函数本身使用交错内部函数。这样,您甚至不必通过PInvoke。