Я собираюсь реализовать сервер boost::asio с пулом потоков, используя один io_service
( HTTP-сервер 3
пример). io_service
будет привязан к сокету домена unix и будет передавать запросы, идущие от подключений к этому сокету, в разные потоки. Чтобы уменьшить потребление ресурсов, я хочу сделать пул потоков динамическим.
Вот концепция. Сначала создается один поток. Когда приходит запрос и сервер видит, что в пуле нет незанятого потока, он создает новый поток и передает ему запрос. Сервер может создавать до некоторого максимального количества потоков. В идеале он должен иметь функцию приостановки потоков, которые простаивают в течение некоторого времени.
Кто-нибудь делал что-то подобное? Или, может быть, у кого-то есть соответствующий пример?
Что касается меня, я думаю, что я должен каким-то образом переопределить io_service.dispatch
, чтобы добиться этого.