2010-07-29 2 views
0

Возможно ли обмен памятью между двумя приложениями MFC C++ без использования Memory mapped files? В настоящее время мы используем этот метод для совместного использования структур, и это слишком медленно для наших требований. Есть ли способ лучше?Общая память без файлов с отображением памяти

ответ

3

Вы уверены, что файлы с отображением в памяти медленные? ОС отображает один и тот же фрагмент ОЗУ в оба пространства процесса (при его переадресации). Другие виновники проблем с производительностью могут быть мьютексами и другими примитивами синхронизации/изменчивыми чтениями и недействительностью кэша для распространения параллельных изменений в памяти между процессами.

Возможно, вы попытаетесь внести изменения локально в не разделяемую область, а затем массовое копирование, а не многократно записывая в общую память.

Другие альтернативы - это передача сообщений, RPC или DCOM, но я сомневаюсь, что они будут более эффективными, особенно если количество передаваемых/связанных данных велико.

1

Я бы подумал, что как только вы установили карту памяти (с MapViewOfFile), это будет довольно быстро.

Является ли ваша проблема с производительностью фактической настройкой сопоставленной памяти, а не ее использованием после ее настройки?

Если у вас действительно есть проблема с файлами с отображением памяти, это еще один способ: http://msdn.microsoft.com/en-us/library/h90dkhs0%28VS.80%29.aspx (сегменты разделяемой памяти DLL), но я сомневаюсь, что это действительно поможет вам.

+0

Согласен. Если это слишком медленно, я думаю, что это проблема синхронизации, а не проблема с отображением памяти. –

Смежные вопросы