Есть задача переделать одно древнее приложение, использующее SHM как единственную IPC- связь.
В общем виде приложение представляет собой несколько процессов, один из которых циклично, с частотой 100 Гц пишет данные в расшаренную память, не потоком, а в определенные ячейки. Второй процесс пишет и читает эту память. Третий процесс — только читает.
Нужно развести эти процессы по разным компам внутри локальной сети, то бишь организовать сетевое межпроцессное взаимодействие.
По выбору пользователя, они могут как и раньше работать только на одном компе.
Вопрос — можно ли через сокет достичь скорости обмена данными, сопоставимую с SHM (хотя бы в рамках одного компа) ?
2 версии с поддержкой сокетов и памяти плодить не хочется.
V>Есть задача переделать одно древнее приложение, использующее SHM как единственную IPC- связь.
V>В общем виде приложение представляет собой несколько процессов, один из которых циклично, с частотой 100 Гц пишет данные в расшаренную память, не потоком, а в определенные ячейки. Второй процесс пишет и читает эту память. Третий процесс — только читает.
V>Нужно развести эти процессы по разным компам внутри локальной сети, то бишь организовать сетевое межпроцессное взаимодействие.
V>По выбору пользователя, они могут как и раньше работать только на одном компе.
V>Вопрос — можно ли через сокет достичь скорости обмена данными, сопоставимую с SHM (хотя бы в рамках одного компа) ?
Нет (не очень понятно, каким образом shared memory можно использовать не на одном хосте).
V>2 версии с поддержкой сокетов и памяти плодить не хочется.
И не надо. Абстрагируйтесь от транспорта — сделайте отдельный модуль с абстрактным интерфейсом, который будет выполнять взаимодействие. А каким образом — будет решать сам. Есть различные фреймворки для решения подобных проблем. Например,
http://gzip.rsdn.ru/article/?1005Автор(ы): Andrew Solodovnikov, Mike Kostuyhin
Дата: 28.12.2008
Мы не проводили социологических исследований, но и без них очевидно, что C++-программисты в большинстве случаев предпочтут написать все, начиная чуть ли не с ОС. Библиотеки, которые широко используются, можно пересчитать по пальцам одной руки. Поэтому неудивительно, что в интернете можно найти целую кучу реализаций RPC, похожих на Microsoft DCOM. Данная статья, на первый взгляд, выглядит еще одной реализацией библиотеки удаленного доступа к объектам, однако данная библиотека обладает рядом особенностей, делающих ее описание заслуживающим внимания. Ее отличают от других высокая производительность, возможность легкой смены транспортного уровня, реализация без использования внешних утилит и совместимость со старыми компиляторами, например, VC++ 6.