Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Опрос неименованых каналов

Ответить
Настройки темы
C/C++ - Опрос неименованых каналов

Пользователь


Сообщения: 78
Благодарности: 5

Профиль | Отправить PM | Цитировать


Всем добрый день!

Вопрос есть, подскажите)!

Тот же Linux, тот же чистый С.

Есть один родительский процесс, порождающий N-ное количество дочерних. Неизвестно заранее сколько. 100-10000 примерно.
Использую fork(). Хочу, чтобы при создании процесса формировалось pipe, через который будет производиться обмен с дочерним.
Соответственно, сколько будет pipe тоже заранее неизвестно.

Как грамотно организовать опрос всей совокупности pipe, на предмет получения сообщения от дочернего процесса?
Требуется некоторым образом производить read их всех, по очереди, в бесконечном цикле.

В данном случае данные будут только извлекаться, и ретранслироваться дальше, тут я ожидаю, что данная процедура (ретрансляция) не будет отнимать много времени.

Отправлено: 21:48, 28-11-2015

 

Пользователь


Сообщения: 78
Благодарности: 5

Профиль | Отправить PM | Цитировать


Смысл тут прост. Я хочу чтобы в головном процессе был открытый на прием-передачу UDP-порт, на который будут посылать сообщения удаленные устройства. Каждое устройство имеет свой идент, по которому можно однозначно его идентифицировать, и открыть дочерний процесс для этого идента. Все это я уже сделал. Все бы хорошо, но после создания процесса общение с устройством переходит на дочерний процесс, с новым номером исходящего порта.

Вот я и надумал, сделать сепаратор между "шлюзовым" UDP-портом, и всеми дочерними потоками и их pipe. Содержимое bind-структур я буду кодировать внутри сообщений отправляемых по pipe, при извлечении данных от "дочки" сепаратор будет декодировать сообщение на само сообщение и sendto-структуру, это не особенно сложно.

Но вот как организовать опрос всех открытых pipe? Особенно учитывая, что их количество будет динамически меняться (дочерние процессы имеют свойство закрываться по таймауту если нет обмена).

Т.е по сути - тут попытка более-менее полной имитации TCP на UDP, по крайней мере в плане аналогии с многопотоковыми ТСР приложениями типа APACHE.

Отправлено: 21:59, 28-11-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для User001

Ветеран


Сообщения: 740
Благодарности: 116

Профиль | Отправить PM | Цитировать


Цитата evpu:
Но вот как организовать опрос всех открытых pipe? Особенно учитывая, что их количество будет динамически меняться (дочерние процессы имеют свойство закрываться по таймауту если нет обмена). »
По идее, самым быстрым должен быть epoll.
Цитата evpu:
Есть один родительский процесс, порождающий N-ное количество дочерних. Неизвестно заранее сколько. 100-10000 примерно. »
Вы уверены, что вам нужно именно процессы (а не потоки) и именно такое количество? Не знаю, какая у вас нагрузка и какая железка, но звучит страшно.
Цитата evpu:
Т.е по сути - тут попытка более-менее полной имитации TCP на UDP »
Вы не UDT реализуете ?

Отправлено: 09:46, 02-12-2015 | #3


Пользователь


Сообщения: 78
Благодарности: 5

Профиль | Отправить PM | Цитировать


>>Вы не UDT реализуете
Не, самодельный алгоритм... Не это.
Напоминает TFTP

>>процессы (а не потоки)
Да, Вы правы - потоки. Получаются через fork(). По началу заимею что-то типа i5, потом можно будет и Xeon поставить.

Последний раз редактировалось evpu, 12-12-2015 в 15:02.


Отправлено: 14:35, 12-12-2015 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Опрос неименованых каналов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочее - Объединение DSL каналов sergey12989 Сетевые технологии 6 14-04-2013 23:51
Прочее - Резервирование каналов skeletor Общий по Linux 4 18-09-2010 16:46
Опрос о контенте witchy Хочу все знать 3 03-08-2010 18:13
Разделение каналов Surround Видео и аудио: обработка и кодирование 1 26-07-2007 17:00
Ширина каналов Muskat Сетевые технологии 1 03-12-2003 05:18




 
Переход