Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > shared memory


Автор: Incinerated 6.3.2012, 16:20
Есть такой вопрос. Есть такая возможность в программирование как использование разделяемой памяти между процессами. Возможно ли как то обратиться к этой общей памяти с другого компьютера? Или это только доступно в пределах одного компьютера?
И если можно то как? 
Спасибо.

Автор: null56 6.3.2012, 16:27
то что такие системы существуют (MPP), это точно, но по реализации сказать ничего не могу
http://pi.sfedu.ru/rspu/structure/university_departments/math_faculty/site/stud_materials/Fomichev/page6.html

Автор: boostcoder 6.3.2012, 16:36
http://www.boost.org/doc/libs/1_49_0/doc/html/interprocess.html

Автор: null56 6.3.2012, 16:58
осмелюсь предположить, что тебе нужно смотреть в сторону mpi
http://ru.wikipedia.org/wiki/Message_Passing_Interface
http://ru.wikipedia.org/wiki/MPICH

Автор: Incinerated 7.3.2012, 10:48
Тут задача немножко посложнее будет.... Один процесс это C++ программа. А второй это браузер. Мне нужно что-то общее для 2-х языков. Связка у меня c++ и php. Браузер обязательное условие.

Автор: Sahab 7.3.2012, 14:10
А можно как-то пообъемнее изложить вопрос?

Автор: xvr 7.3.2012, 15:36
Цитата(Incinerated @  7.3.2012,  10:48 Найти цитируемый пост)
Один процесс это C++ программа. А второй это браузер.

И на разных машинах  smile Тогда 'общая разделяемая память' для них будет где то на WEB сервере  smile Вряд ли ближе  smile 

Автор: Incinerated 7.3.2012, 16:17
Есть с++ windows service, который производит необходимые вычисления. Данные берет от другого сервера посредством winsock. Моя задача состоит в том, чтобы отображать результаты вычислений в браузере примерно каждые 600-800 мс. Сейчас я сделал это посредством tcp сокетов. Но не считаю это хорошим решением. Поэтому спрашиваю про разделяемую память. Но в итоге мы имеем с++ приложение на одной машине, а web-сервер на другой машине. Есть ли какие либо другие решения?

P.S. базу данных не предлагать, слишком много запросов будет к ДБ в короткий промежуток времени. И плюс возможны случаи, когда таблица будет чиста, в веб-сервер будет читать данные из нее.... Записывать в таблицу без ее очищения приведет к огромному числу записей. Да и сама идея мне кажется медленной.

Автор: feodorv 7.3.2012, 16:41
Цитата(Incinerated @  7.3.2012,  17:17 Найти цитируемый пост)
Но в итоге мы имеем с++ приложение на одной машине, а web-сервер на другой машине. Есть ли какие либо другие решения?

Перенести всё на одну машину?
Если не получается, то TCP/IP - не такое уж плохое решение, я бы даже сказал - хорошее)))

Цитата(Sahab @  7.3.2012,  15:10 Найти цитируемый пост)
А можно как-то пообъемнее изложить вопрос? 

+1

От последних объяснений объёмности не прибавилось. 
Мне лично схема взаимодействия видится таким образом:
  • есть устройство, которое периодически кидает пакеты типа NetFlow сервису Windows
  • сервис Windows агрегирует данные в какие-то свои таблицы, доступ к которым предоставляет по TCP/IP
  • на другом узле работает Web-сервер с PHP/CGI/FastCGI, который связывается с сервисом и запрашивает агрегированные таблицы
  • ещё на одном узле сидит пользователь с браузером, которому нужно видеть эти быстро меняющиеся таблицы

Однако, я не экстрасенс, могу и ошибаться...

Автор: xvr 7.3.2012, 17:12
Цитата(Incinerated @  7.3.2012,  16:17 Найти цитируемый пост)
Есть с++ windows service, который производит необходимые вычисления. Данные берет от другого сервера посредством winsock. Моя задача состоит в том, чтобы отображать результаты вычислений в браузере примерно каждые 600-800 мс.

Если сервис и брайзер работают на одной машине, то можно сделать ActiveX объект. Если на разных, то TCP/IP вполне нормальное решение

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)