Tôi cần sử dụng các hoạt động liên khóa (CompareExchange, Increment, vv) đối với bộ nhớ trong MemoryMappedFile
s trong .NET.Làm thế nào để sử dụng x64 Hoạt động khóa liên động với MemoryMappedFiles trong .net
Tôi đã tìm thấy điều này answer cho một câu hỏi rất giống nhau. Vấn đề là các hoạt động liên khóa không được xuất từ tệp kernel32 (hoặc bất kỳ tệp nào khác) trên hệ điều hành 64 bit (xem ví dụ: http://blog.kalmbachnet.de/?postid=46).
Có cách nào khác để tôi có thể gọi các chức năng khóa liên động trên một khối bộ nhớ trong quá trình .NET 64 bit không?
Tôi sẽ cố gắng viết Dll C của riêng tôi với các chức năng được xuất khẩu gọi các chức năng khóa liên động, và PInvoke nó từ .NET. –
@AlexFarber Điểm Excelent! Tôi chỉ là goint để hỏi về điều này :) Bạn có xảy ra để biết nếu tôi có thể dễ dàng tìm hiểu ASM thực hiện các trình biên dịch nội tại các chức năng Interlocked (ví dụ như [http://msdn.microsoft.com/en-us/library/2ddez55b(v = vs.80) .aspx] (http://msdn.microsoft.com/en-us/library/2ddez55b (v = vs.80) .aspx))? Vì vậy, tôi không phải tự mình tái tạo mã ASM – Jan
Bạn không cần phải làm điều này, chỉ cần gọi các hàm được yêu cầu từ Dll gốc, trình biên dịch sẽ làm phần còn lại. Ý tôi là, đối với mỗi chức năng khóa liên động mà bạn cần, hãy viết chức năng Dll được xuất khẩu có chức năng Interlocked. –