我需要对.NET中MemoryMappedFile
中的内存使用互锁操作(CompareExchange,Increment等)。
我发现这个answer是一个非常相似的问题。问题在于,互锁操作不会从64位OS上的kernel32(或任何其他)dll中导出(请参阅例如http://blog.kalmbachnet.de/?postid=46)。
还有其他方法可以在64位.NET进程中的内存块上调用互锁函数吗?
最佳答案
给自己写一个小的C++/CLI帮助程序库,该库提供托管代码可使用的互锁操作。
我相信最快的互操作路径将是公开一个内部调用非托管函数的托管类,该托管类本身在互锁的内在函数上使用。这样,您甚至不必进行PInvoke。