В образовательных целях задумал разработать IM-сервер, если быть точнее XMPP-сервер.
Так вот. На этапе проектирования возник такой вопрос: какой метод, в данном случае, более пригоден для реализации параллельной работы?
Сейчас я рассматриваю несколько вариантов, но возможно вы предложите лучше.
1. Не постоянное число процессов/потоков. Один мастер-процесс обрабатывает запросы на соединение и для каждого создает новый поток/процесс. С каждым клиентом ассоциирован один процесс который и обрабатывает поступающие от него запросы.
2. Постоянное число потоков/процессов. Один мастер-процесс создает число потоков равное числу процессоров (или ядер) в системе или близкое к нему. Каждый из таких потоков/процессов обрабатывает несколько соединений с клиентами.
Я более склоняюсь к первому (его, как минимум, проще реализовать) но хотелось бы узнать и ваше мнение.
Заранее спасибо за ответ.
P.S. В качестве языка программирования использую Си (С99), ОС: Unix-like, в частности GNU/Linux.