|
Дата: 31 Июл, 19:10
Вобщем вопрос такой....
Что оптимальней/рациональней использывать для межпроцессного обмена: классически send/receive или регестрировать устройство и аттачить префикс в /dev?
Я, конечно, понимаю что, случаи разные...в моем случае:
есть АРМ - состоящий из десятка взаимодействующих модулей, причем, некоторые из них находятся на другом узле.
А вобще, хочется услышать опытное мнение о том и другом
(или еще о каком...) способе взаимодействия, так сказать - о плюсах и минусах.
Заранее спасибо.
P.S. QNX 4.25
|
|
Дата: 7 Авг, 09:18
Send/Receive - это нативный механизм. name_attach - это надстройка. Send/Receive требует более иерархической архитектуры, поскольку в подобном случае наиболее простым решением является (ИМХО) некий "главный диспетчер", порождающий все остальные процессы и соответственно по мере порождения новых передавая им id "братьев". Понятно, что это требует запуска в определённой последовательности, и выглядит несколько громоздким. Но мне нравился такой подход, и я в своё время на четвёрке именно так организовывал свою систему. Уж больно удобен, на мой вкус, механизм Send/Receive/Reply-блокировок для "естественной" синхронизации, удобно и диагностировать аварийные ситуации. Для драйверов же, конечно, однозначно надо использовать аттачанье.
С уважением, ZZZ
|
|
Дата: 10 Авг, 16:13
Спасибо за ответ.
По поводу "иерархической архитектуры" абсолютно согласен, но к сожалению в данном проекте конкретная иерархия не продумана, что задрудняет отладку.
А сечйчас появились новые требования (особенно к скорости передачи данных), вот я и расматриваю альтернативные способы передачи. Пока лучше чем Send/Receive/Reply не нашел (если что-то еще и есть), и самое хреновое это, что нельзя использывать Ethernet.
|
|
Дата: 14 Авг, 14:19
Погодите-погодите...Если Вы говорите "Ethernet" - значит речь идёт о межпроцессном общении по сети? Как-то не врублюсь в противоставление IPC vs Ethernet. Это вовсе разные вещи. Или я чего-то не так понял.
Скорость передачи данных от процесса к драйверу io-net настолько превосходит скорость обмена по самой сети, что здесь бессмысленно озабачиваться скоростью IPC. Не Ethernet, говорите Вы? А что, com-порты? CANы?
С уважением, ZZZ
P.S. Как я понял, кстати (поскольку речь о name_attach), имеется в виду QNX4 ?
|
|
Дата: 15 Авг, 10:55
Я в свое время на QNX4 использовал неблокирующий обмен по сети при помощи RAW-пакетов. Каждый процесс посылал свои изменения другим - т.е. все процессы были равноправны.
|