Здравствуйте, SkyDance, Вы писали:
SD>Сейчас у нас есть обработчик этого добра на чистом epoll и незамутнённом C.
Насколько я помню, у asio есть проблемы с производительностью на ОС, где "искаропки" есть только реактор — epoll/kqueue (на Windows по умолчанию используется системный проактор — IOCP). В случае использования подхода "один экземпляр asio::io_service и несколько рабочих потоков (по количеству логических CPU), работающих с ним (asio::io_service::run())" получается bottleneck где-то во внутренностях asio (mutex). В этом случае я предпочитаю использовать подход "несколько экземпляров asio::io_service (по количеству логических CPU) и по одному рабочему потоку на каждый из экземпляров". Самое интересное, что эти два подхода можно скрестить и выбирать нужный в runtime (при старте) — см.
echo_server (
https://github.com/mabrarov/asio_samples).
Programs must be written for people to read, and only incidentally for machines to execute