Можно ли из 2-х приложений пользоваться общей ОЗУ (С++)?
Задача такая: есть гигантская матрица нужно ее передать в другое приложение с максимальной скоростью, предлогается использовать ОЗУ, а не файл на диске (опять таки затраты времени не позволяют), какие есть выходы? помогите пожалуйста, зарание спасибо.
Google и поиск по этому форуму тебе в помощь.
Для чтения в другом процессе можно использовать ReadProcessMemory.
Ну почему же, если передавать будешь через файл, отображенный на память, затраты времени будут небольшими. Скорее всего, файл фактически не будет использоваться.
См.:
CreateFile
CreateFileMapping
MapViewOfFile
См.:
CreateFile
CreateFileMapping
MapViewOfFile[/QUOTE]
Матрица частенько обновляться будет(400МБ - это ужас :-( ), а пока затраты получаются большие. Хочу проредить чтение по максимому.Просто не обязательно через фаил может мона как то еще. Пока не могу понять может ли CMemFile использоваться из нескольких процессов или нет...
ShumilinAG Если матрица обновляется не полностью, а кусками, то имеет смысл передавать дельту(измененные участки). А че за прога такая с матрицей в 400М? Аж интересно стало.
3D визулизация с офигенной точностью. А кусками все и будет ))) 400Mb разжатая основная(рабочая) матрица в сжатом виде меньше (((( но разжимать.сжимать долговато.
Не пойму, в чем проблема. Отображение файла на память позволяет не просто обмениваться информацией, а память будет физически общая, т. е. оба процесса будут пользоваться одними и теми же 400 Мб памяти. А файл нужен только для подкачки. Т. е. если возникнет ситуация, что у операционной системы не хватает оперативки для других приложений - в обычной ситуации она скинет твою матрицу в файл подкачки, а в данном случае - в указанный тобой файл. Так что разницы нет. Более того, есть экономия оперативки и мгновенная "передача" данных.
Просто я не так долго пишу на с++,поэтому и обратился за помощью к знающим.
Да так именно мне и предложили сделать!(использую MMF оч. удобно) Спасибо всем, программа почти пашет ;-) остались мелочи всякие :-)