Пример динамического пула потоков в boost::asio

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

Вот концепция. Сначала создается один поток. Когда приходит запрос и сервер видит, что в пуле нет незанятого потока, он создает новый поток и передает ему запрос. Сервер может создавать до некоторого максимального количества потоков. В идеале он должен иметь функцию приостановки потоков, которые простаивают в течение некоторого времени.

Кто-нибудь делал что-то подобное? Или, может быть, у кого-то есть соответствующий пример?

Что касается меня, я думаю, что я должен каким-то образом переопределить io_service.dispatch, чтобы добиться этого.

5
задан boqapt 20 June 2012 в 13:56
поделиться