Сервер сокетов с epoll и потоками

Я пытаюсь создать сервер сокетов на C для совместного редактора в реальном времени http://en.wikipedia.org/wiki/Collaborative_real-time_editor , но я не знаю, какая серверная архитектура лучше для него.

Сначала я пытался использовать select для сервера сокетов, но после этого я читал об epoll и теперь думаю, что epoll - лучший выбор, потому что клиент будет отправлять каждое письмо, которое будет писать пользователь. textarea на сервер, поэтому у сервера будет выделение данных для обработки.

Кроме того, я хочу использовать потоки с epoll, но я точно не знаю, как их использовать. Я хочу использовать потоки, потому что считаю, что на целевой машине лучше использовать 2 или все ЦП.

Мой план

  • создать 2 потока при запуске сервера

  • первый поток проанализирует новых клиентов и подготовит их к чтению или отправке

  • второй поток будет выполнять задание по чтению и отправке данных из / клиентам

Проблема в том, что эти 2 потока будут использовать while (1) с epoll_wait.

У меня такой вопрос: подходит ли эта серверная архитектура для использования epoll с потоками? Если нет, то какие у меня есть варианты?

РЕДАКТИРОВАТЬ: Я не могу использовать libevent или libev или другие библиотеки, потому что это проект колледжа, и мне не разрешено использовать внешние библиотеки.

6
задан cemycc 28 November 2011 в 18:05
поделиться