Написание высокопроизводительного сервера.Какой метод? - PullRequest
0 голосов
/ 24 марта 2011

если вам нужно написать высокопроизводительный сервер, как бы вы это сделали?

  • Использование асинхронной блокировки epoll / kqueue? Но как справиться с блокировкой системного вызова epoll / kqueue здесь? Возможно, с главным потоком, который использует рабочие потоки, которые выполняют блокировку epoll / kqueue?
  • Использует libevent? Отличается ли он даже от epoll / kqueue, поскольку он охватывает только различные механизмы, такие как select, epoll, kqueue и т. Д.?
  • Или вместо этого использовать асинхронную блокировку epoll / kqueue с использованием Асинхронная неблокирующая libaio? Но поддерживает ли он даже сокеты или только дисковый ввод-вывод?

Спасибо за ваши ответы.

Ответы [ 2 ]

1 голос
/ 24 марта 2011

Я бы использовал libevent.

Он использует лучший доступный механизм на целевой платформе, каким бы он ни был; Таким образом, без изменений ваша программа будет использовать kqueue на BSD, epoll(4) на Linux и все, что лучше для всего, что может существовать, при этом все еще возвращаясь к select(2) на старых платформах, и каким-то образом она также работает Окна.

Волшебное программное обеспечение. :)

0 голосов
/ 24 марта 2011

Я бы использовал boost :: Asio
Он использует лучший неблокирующий ввод / вывод для системы

  • epoll для linux
  • kqueue для NIX, как
  • перекрывающийся ввод / вывод в Windows

Может обрабатывать и другие потоки (COM, файлы).
Идея проста: создать класс io_service и записать классы дескриптора (как события) для управления потоком.

...