Длительная обработка в обработчиках с boost::asio

Я разрабатываю сетевой сервер на основе boost:: asio. Мне нужно выполнять длительные задания обработки в обработчиках, и я думаю, что эта обработка должна быть перемещена из обработчиков в отдельный пул потоков, где у меня будет лучший контроль (например, приоритизация задач). Обработчики просто ставили новую задачу в очередь заданий.

Также будет очередь ответов, где ответы будут удалены из очереди и отправлены обратно клиентам. (клиент отправляет запросы синхронно)

Интересно, имеет ли это смысл или просто что-то упускает.


person ternyk    schedule 13.12.2011    source источник


Ответы (1)


Короткий ответ: да. Длинный ответ, это зависит. Вообще говоря, если вам нужна более высокая сеть, вы должны свести к минимуму обработку, выполняемую в обработчиках, и разгрузить ее в поток. Это особенно важно, если у вас есть требования причинно-следственной связи для получаемых данных, поскольку async_receive не гарантирует порядок выполнения обработчиков.

person CodingAway    schedule 15.12.2011