Обмен памятью между двумя приложениями

У меня есть два разных приложения Windows (два разных человека, которые пишут код). Один из них написан на С++, а другой - на С#. Мне нужно как-то разделить данные в ОЗУ между ними. Нужно записывать данные, а другой читать только записанные данные. Что я должен использовать, чтобы сделать его наиболее эффективным и быстрым? Спасибо.

Ответы

Ответ 3

Вы можете использовать Именованный Трубы.

Именованный канал - это именованный, однонаправленный или дуплексный канал для связи между сервером каналов и одним или несколькими клиентами. Все экземпляры именованного канала имеют одно и то же имя канала, но каждый экземпляр имеет свои собственные буферы и дескрипторы и предоставляет отдельный канал для взаимодействия клиент/сервер. Использование экземпляров позволяет нескольким клиентам каналов одновременно использовать один и тот же канал.

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

Ответ 4

Я рекомендую вам переконфигурировать его, чтобы он мог использовать связь на основе сообщений. Он более прочен и намного проще в использовании в .NET с автоматическим управлением памятью (по сравнению с общей памятью). Хотя медленнее.

Ответ 5

Должно быть, это баран, которым вы делитесь? Если нет, вы можете написать свои данные, чтобы сказать XML файл из одного приложения и прочитать xml с другим. Вы должны убедиться, что только одно приложение за раз читает с ресурса. В случае xml файла вы можете создать файл в каталоге XML файла с именем "xml_filename.lock", который, если он присутствует, указывает, что файл XML используется другим приложением.

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