Сервер данных на основе памяти для локального IPC - PullRequest
0 голосов
/ 10 мая 2009

Я собираюсь запустить приложение (я), для которого каждый раз требуется около 200 МБ рыночных данных. Это тривиальное количество данных для хранения в памяти в эти дни, поэтому для скорости это то, что я хочу сделать.

В течение дневного сеанса я, вероятно, снова и снова буду запускать, перезапускать, перезаписывать, перезапускать и т. Д. И т. Д. И т. Д.

ТАК, вопрос в том, как хранить данные в памяти весь день, чтобы даже в случае сбоя приложения не приходилось перезагружать данные, открывая файл данных на диске и перезагружая данные?

Моя первоначальная идея - написать приложение для сервера данных, которое не делает ничего, кроме чтения данных в общую память, чтобы они были доступны для использования. Если я сделаю это, я думаю, я мог бы использовать отображение памяти для IPC, вызвав

CreateFile ()

CreateFileMapping ()

MapViewOfFile ()

Есть ли лучший МПК / подход?

Ответы [ 2 ]

1 голос
/ 11 мая 2009

Если у вас достаточно памяти и больше ничего не требуется, это может сократить время запуска. Чтобы гарантировать доступ к памяти, вы, вероятно, захотите иметь отображенный в памяти файл в именованной общей памяти, как описано здесь . Вы можете создать простую программу для создания общего ресурса и управления им, чтобы гарантировать, что он останется в памяти.

1 голос
/ 10 мая 2009

Просто карта памяти файла данных. Если на вашем компьютере недостаточно памяти, файл будет оставаться в файловом кеше даже после выхода из программы. При следующем запуске доступ будет быстрым.

Если ваши данные в памяти отличаются от данных на диске, просто используйте два файла. При перезапуске проверьте временную метку и ревизию файла, записанную в файл памяти, для сравнения с файлом диска, и таким образом ваша программа узнает, какая из них имеет самые последние данные.

...