Я пытаюсь создать сервер сокетов на C для совместного редактирования в реальном времени http://en.wikipedia.org/wiki/Collaborative_real-time_editor, но я не знаю, какая архитектура сервера для этого лучше всего.
Сначала я пытался использовать select для сервера сокетов, но после этого я читал об epoll и теперь думаю, что epoll — лучший выбор, потому что клиент будет отправлять каждое письмо, которое пользователь напишет в textarea, на сервер, поэтому у сервера будет достаточно данных для обработки.
Кроме того, я хочу использовать потоки с epoll, но я точно не знаю, как их использовать. Я хочу использовать потоки, потому что считаю, что лучше использовать 2 или все процессоры на целевой машине.
Мой план
создать 2 потока при запуске сервера
первый поток проанализирует новых клиентов и подготовит их к чтению или отправке
второй поток будет иметь задание на чтение и отправку данных от/к клиентам
Проблема в том, что эти 2 потока будут использовать while(1) с epoll_wait.
Мои вопросы: это хорошая архитектура сервера для использования epoll с потоками? Если нет, то какие варианты у меня есть?
EDIT: я не могу использовать libevent или libev или другие библиотеки, потому что это проект колледжа, и мне не разрешено использовать внешние библиотеки. .