Я изучаю прототип небольшой сетевой системы, который на самом низком уровне имеет один программный «родительский» процесс, который обменивается данными с 5 программными «дочерними» процессами.
Я использую ZeroMQ для связи между процессами.
Мой вопрос - это вопрос многопоточной обработки по сравнению с однопоточной обработкой.
В такой системе будет ли более эффективен один поток в родительском элементе, который обрабатывает отправку, получение и обработку сообщений дочерним элементам и от них, чем 5 потоков (1 поток на процесс)?
Для однопоточных, я обеспокоен тем, что хотя родительский процесс обрабатывает одно сообщение, сообщения начнут накапливаться.
Для многопоточных систем меня беспокоит переключение контекста и снижение производительности, если эта системная архитектура расширена. Подумайте о 50 родителях по 5 нитей за штуку, поэтому минимум 250 нитей.
Потоки записаны в Стандарты ZeroMQ без блокировок, критических разделов, разделяемой памяти и т. Д.
Я использую Linux и C ++.