Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Обмен данными между процессами

20K
19 октября 2006 года
Disu
5 / / 19.10.2006
Привет.
Необходимо написать два процесса, первый должен периодически вызывать второй и передавать ему массив данных. Второй процесс, получив данные, должен произвести над ними вычисления и вернуть первому процессу результат(число).
Вопрос: как это лучше реализовать на C++ Builder. Может простенький примерчик, или где об этом можно прочитать..
Заранее спасибо.
21K
20 октября 2006 года
XSpider
3 / / 28.09.2006
А какой смысл во втором процессе, если первый всёравно ждёт пока отработает второй?
Данные можно передать каким нибудь компанентом, дав потоку ссылку на себя указателем this! Но если честно, компаненты стабильно работают. только в одном потоке, любое скрещенное обрашение приводит к падению приложения. Ну ведь не перевились ещё такие способы передачи данных, как внешние носители: Файлы, инишники, реестр, hml. Ещё можешь разобраться с потоками Stream!
3
21 октября 2006 года
Green
4.8K / / 20.01.2000
XSpider, твои советы крайне некомпетентны.
1. Речь идет о процессах, а не потоках.
2. При чем тут компоненты?
3. Не любое "скрещенное обрашение" приводит к падению приложения.
4. "Способы передачи данных, как внешние носители" - это крайне неверный подход.
5. Чем файл отличается от "инишника" или от html (кстати последнее язык разметки)?
6. Ты предлагаешь передавать данные через реестр? Сам частенько пользуешься этим советом? :)
7. Хм... а потоки здесь каким боком?
247
21 октября 2006 года
wanja
1.2K / / 03.02.2003
А разделяемая память?
20K
23 октября 2006 года
Disu
5 / / 19.10.2006
Дело в том, что второй процесс - это модель которая возвращаяет набор расчитанных критериев. А первый процесс это модуль генетического алгоритма. Предполагается, что оба этих модуля разрабатываются отдельно друг-от друга и модуль ГА может работать с произвольной моделью.
294
24 октября 2006 года
Plisteron
982 / / 29.08.2003
Имхо, проще всего по IP (да и гибко получается, прочессы смогут даже на разных манишах работать).
3
24 октября 2006 года
Green
4.8K / / 20.01.2000
А при чем тут Internet Protocol ?
Почему бы тогда не по телеграфу?
Какая разница для данной задачи, какой протокол использовать на сетевом уровне, если задача находиться на прикладном уровне?

Disu, читай приведенную в самом начале ссылку, используй pipe!
294
24 октября 2006 года
Plisteron
982 / / 29.08.2003
[QUOTE=Green]А при чем тут Internet Protocol ?
Почему бы тогда не по телеграфу?
Какая разница для данной задачи, какой протокол использовать на сетевом уровне, если задача находиться на прикладном уровне?

Disu, читай приведенную в самом начале ссылку, используй pipe![/QUOTE]
Не язви. Иксы в *никсах обмениваются по IP, и ничего. Одному только Green религия не позволяет IP использовать.
240
24 октября 2006 года
aks
2.5K / / 14.07.2006
Ну это же смыл иксов - быть граффическим сервером, на котором отображается GUI приложения работающего как локально так и удаленно. Потому и обмениваются так. Причем не обязательно в *никсах.

Смысл то что надо организовать обмен между 2-мя отдельными процессами. Способов комуникации много (нормальных, а не через файл). Что выбрать лучше - решать пользователю, в зависимости от специфики его задачи. Если оба приложения обязанны вополнятся на одной машине - логичней через пайпы. Возможен обмен в сети - прощще через сокеты.
По поводу разного уровня IP протокола и протокола обмена между процессами пользователя находящимися уже на прикладном уровне - полностью согласен с Грином
294
24 октября 2006 года
Plisteron
982 / / 29.08.2003
[QUOTE=aks]Ну это же смыл иксов - быть граффическим сервером, на котором отображается GUI приложения работающего как локально так и удаленно. Потому и обмениваются так. Причем не обязательно в *никсах.

Смысл то что надо организовать обмен между 2-мя отдельными процессами. Способов комуникации много (нормальных, а не через файл). Что выбрать лучше - решать пользователю, в зависимости от специфики его задачи. Если оба приложения обязанны вополнятся на одной машине - логичней через пайпы. Возможен обмен в сети - прощще через сокеты.
По поводу разного уровня IP протокола и протокола обмена между процессами пользователя находящимися уже на прикладном уровне - полностью согласен с Грином[/QUOTE]
Я не настаиваю на использовании именно IP, решать, естественно, автору программы, т.е., в данном случае, Disu. Просто я считаю, что такой способ тоже возможен. Иксы привёл как один из примеров.
И что с того, что "разный уровень IP протокола и протокола обмена между процессами"?
По поводу сокетов:
[QUOTE=MSDN]Windows Sockets 2 (Winsock) enables programmers to create advanced Internet, intranet, and other network-capable applications to transmit application data across the wire, independent of the network protocol being used. With Winsock, programmers are provided access to advanced Microsoft® Windows® networking capabilities such as multicast and Quality of Service (QOS).[/QUOTE][QUOTE=MSDN]Winsock programming previously centered around TCP/IP.[/QUOTE]
Т.е. используя сокеты, вы используете тот же самый IP. Или IPX, или какой у вас сетевой протокол поднят. Что я не так выше по треду сказал?
240
24 октября 2006 года
aks
2.5K / / 14.07.2006
Да не в этом дело ) Суть придирки как я понимаю была во фразе, что прощще взаимодействие организовать по IP. Понятно через сам протокол IP процессы пользователя взаимодействовать не будут, поскольку находятся уровнем несколько повыше. А будут через какой то свой протокол который как минимум будет исспользовать что нибудь из транспортного уровня.

Тоесть ясно что вы имели ввиду, но фраза получилась двусмысленной. А так никто не против сокетов. Просто если рассматривать взаимодействие с точки зрения протокола сетевого уровня, можно спустится и на физический и вспомнить про линии передачи електрически, оптических и т.д. сигналов. ну а потом уже пошла софистика ))
3
24 октября 2006 года
Green
4.8K / / 20.01.2000
Прошу прощения за резкость. :)

aks, меня правильно понял. pipe - это прикладной уровень, то что и нужно автору, а уж ниже этот же самый pipe может быть завязан на IP или SharedMemory и т.п.
20K
24 октября 2006 года
Disu
5 / / 19.10.2006
[QUOTE=Green]А при чем тут Internet Protocol ?
Почему бы тогда не по телеграфу?
Какая разница для данной задачи, какой протокол использовать на сетевом уровне, если задача находиться на прикладном уровне?

Disu, читай приведенную в самом начале ссылку, используй pipe![/QUOTE]

Green, а какие из pipes лучше использовать?
3
26 октября 2006 года
Green
4.8K / / 20.01.2000
Если организовать так, что один процесс порождает другой, то лучше использовать неименованные (Anonymous Pipes). Я давно как-то приводил пример, он не идеальный, но для осмысления подойдет: http://forum.codenet.ru/showpost.php?p=31942&postcount=3

Если процессы не могут быть порождены друг-другом, используй именнованные (Named Pipes).
18K
19 октября 2010 года
ZVano
8 / / 12.07.2006



Спасибо за ссылку. Очень полезная статья.

240
19 октября 2010 года
aks
2.5K / / 14.07.2006
O_o
Круто, ценитель спустя 4 года. )
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог