Socket вместо shared memory
От: vilner  
Дата: 30.03.09 13:03
Оценка:
Есть задача переделать одно древнее приложение, использующее SHM как единственную IPC- связь.
В общем виде приложение представляет собой несколько процессов, один из которых циклично, с частотой 100 Гц пишет данные в расшаренную память, не потоком, а в определенные ячейки. Второй процесс пишет и читает эту память. Третий процесс — только читает.
Нужно развести эти процессы по разным компам внутри локальной сети, то бишь организовать сетевое межпроцессное взаимодействие.
По выбору пользователя, они могут как и раньше работать только на одном компе.
Вопрос — можно ли через сокет достичь скорости обмена данными, сопоставимую с SHM (хотя бы в рамках одного компа) ?
2 версии с поддержкой сокетов и памяти плодить не хочется.
Re: Socket вместо shared memory
От: Andrew S Россия http://alchemy-lab.com
Дата: 31.03.09 19:08
Оценка:
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.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.