2011-01-02 13 views
8

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?

+0

i co z C++/CLI, który kompiluje się z MSIL, nie jest mieszany (np. Kompiluje się z '/ clr: pure')? –

+1

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) –

+0

Inną prawidłową opcją są NamedPipes –

Odpowiedz

8

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

+0

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

15

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.

+0

Dziękujemy za użyteczne informacje o skuteczności, +1 :) – em70

2

This article wyjaśnia w sekcji 3, jak owijać MapViewOfFile i znajomych za pomocą P/Invoke.

Powiązane problemy