Создание пула потоков с помощью boost

Можно ли создать пул потоков, используя поток boost? я просмотрел все библиотеки boost и не смог найти менеджер пула потоков (или что-то в этом роде)... Есть ли способ сделать это?

Спасибо!


person grich    schedule 03.11.2010    source источник
comment
См. также: stackoverflow.com/questions/19500404/   -  person Jeroen    schedule 12.03.2014
comment
Я разместил пример пула потоков, используя boost:: asio здесь. [Пример пула потоков с boost::asio][1] [1]: stackoverflow.com/questions/31835009/   -  person DannyK    schedule 05.08.2015
comment
Возможный дубликат Как создать пул потоков с помощью повышения в С++?   -  person Jeroen    schedule 18.11.2017


Ответы (2)


Существует неофициальный (пока) threadpool в boost. Но не проблема реализовать его самостоятельно, особенно если большая универсальность не является основной целью. Идея: ваш пул потоков может быть параметризован типом TaskType и количеством воркеров. Для TP должна быть задана функция-обработчик, которая принимает TaskType. ТП содержит очередь добавленных задач. Настоящая функция потока просто берет задачу из очереди и вызывает переданный обработчик. Что-то такое.

person Armen Tsirunyan    schedule 03.11.2010
comment
Я надеялся, что они уже добавили библиотеку threadpool. Есть идеи, скоро ли она будет добавлена? большое спасибо за ваш быстрый ответ! - person grich; 03.11.2010
comment
Я не знаю точно, но я предполагаю и надеюсь, что и ThreadPool, и Process будут в 1.45. - person Armen Tsirunyan; 03.11.2010
comment
Библиотека threadpool выглядела красиво; очень жаль, что документации не хватает (многие страницы содержат TODO и предупреждают, что описание устарело). Похоже, с 2008 года ему не уделялось особого внимания. - person Edward Kirton; 15.07.2016

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

person Nim    schedule 03.11.2010
comment
Использование boost asio — правильный путь. Лучше не управлять пулом потоков напрямую. Так же, как Intel Threading Building Blocks (TBB). - person hackworks; 03.11.2010
comment
Можете ли вы добавить больше об этом? звучит очень интересно! - person grich; 03.11.2010
comment
Я разместил свой пример пула потоков, основанный на рецептах Asio. stackoverflow.com/questions/ 31835009/ - person DannyK; 10.08.2015