Poszukuję darmowych, w pełni zarządzanych implementacji pamięci współużytkowanej dla .NET (dopuszczalne jest wywołanie P/Inv, mieszane C++/CLI nie jest).W pełni zarządzane implementacje pamięci .NET w pamięci współużytkowanej?
Odpowiedz
Wygląda na to, że szukasz Memory-Mapped Files, które są obsługiwane w BCL .NET 4.0.
Począwszy od wersji .NET Framework 4, można użyć kodu zarządzanego dostępu do plików w pamięci, w taki sam sposób, natywne funkcje dostępu systemu Windows pliki w pamięci, jak to opisano w Zarządzanie pamięcią odwzorowany plików w Win32 w bibliotece MSDN
Wygląda na to, że te i wspólny muteks zamierzają załatwić sprawę. W końcu po prostu muszę przekazać kilka debelów z wyjątkowo niskim opóźnieniem w dwóch procesach dla niektórych rzeczy finansowych. Dzięki – em70
Cóż, framework .NET jest bezpłatny, zalecany. .NET 4.0 obsługuje klasy przestrzeni nazw System.IO.MemoryMappedFiles. Pamięć współdzielona jest dość drastycznym niedopasowaniem impedancji z pojęciem garbage collector, dlatego zajęło to trochę czasu. O ile nie korzystasz z wskaźników, kopiowanie z sterty GC do widoku MMF jest nieuniknione.
Inne mechanizmy IPC również korzystają z pamięci współdzielonej, po prostu nie są jawne, ponieważ są wbudowane w jądro. Wszystko to działa z mniej więcej taką samą prędkością, mikrosekundą, aby skonfigurować mapowanie, a następnie tylko przepustowość magistrali, aby wykonać kopię pamięci na pamięć. Pięć gigabajtów na sekundę jest najwolniejszymi, na jakie napotkasz.
Dziękujemy za użyteczne informacje o skuteczności, +1 :) – em70
This article wyjaśnia w sekcji 3, jak owijać MapViewOfFile i znajomych za pomocą P/Invoke.
- 1. Włączanie trybu współużytkowanej pamięci podręcznej w System.Data.Sqlite (.net)
- 2. Usuwanie segmentu pamięci współużytkowanej za pomocą shmctl
- 3. Zmiana rozmiaru pamięci współużytkowanej POSIX. Działający przykład:
- 4. Rozproszona biblioteka pamięci współużytkowanej dla C++?
- 5. ORA-27101: Dziedzina pamięci współużytkowanej nie istnieje
- 6. co to znaczy konfigurowanie MPI dla pamięci współużytkowanej?
- 7. Jakieś dostępne w pamięci implementacje FileSystem dla Java7 nio2?
- 8. Używanie współużytkowanej pamięci podręcznej w środowisku farmy sieci Web do wykrywania ataków powtórki w WCF
- 9. Nie można wykryć przydzielania pamięci niezarządzanej w .NET
- 10. Test wycieków pamięci w aplikacjach .NET
- 11. Jak stworzyć wyciek pamięci w C#/.NET
- 12. Czy istnieje sposób ustawiania wartości domyślnej dla tablicy pamięci współużytkowanej?
- 13. Rozwiązywanie ORA-4031 "nie można przydzielić x bajtów pamięci współużytkowanej"
- 14. Używanie pamięci S3 z .NET
- 15. Czy ktoś może wyjaśnić różne implementacje pamięci podręcznej Perla?
- 16. Używanie przypiętej pamięci/zmapowanej pamięci w OpenCL
- 17. Używanie sqlite android w pamięci
- 18. Jak analizować wykorzystanie pamięci ze zrzutu pamięci?
- 19. Jaki jest ślad pamięci obiektu w środowisku wykonawczym w .NET?
- 20. Kopia zapasowa bazy danych SQLite w pamięci w .NET
- 21. 64-bitowy model pamięci .NET 3.5SP1 w porównaniu do 32-bitowego modelu pamięci
- 22. .NET Zmiana wielkości obrazu wycieku pamięci
- 23. Zrozumienie wycieków pamięci w ASP.net przy użyciu Profiler pamięci RedGate
- 24. Profiler pamięci dla .NET Compact Framework
- 25. . Blokowanie jednoczesne .Net ma wyciek pamięci?
- 26. Alokacja pamięci w C++
- 27. Przechowywanie danych w pamięci
- 28. Alokacja pamięci w C
- 29. Wzorce wizualne w pamięci?
- 30. Model pamięci w Ruby
i co z C++/CLI, który kompiluje się z MSIL, nie jest mieszany (np. Kompiluje się z '/ clr: pure')? –
Udostępnianie pamięci jest łatwe, ale zdajesz sobie sprawę, że można udostępniać tylko prymitywne typy? (i prawdopodobnie wartościują typy, w których wszyscy członkowie są prymitywni) –
Inną prawidłową opcją są NamedPipes –