иметь возможность задавать минимальное и максимальное кол-во потоков.
Я такое пока что только в POCO видел. мб ещё какие варианты есть
C++ Rest SDK, cppcoro, boost::threadpool
но ведь в бусте и cppcoro (насколько я вижу по static_thread_pool) кол-во потоков не меняется в зависимости от нагруженности пула
А, если тебе динамическая подстройка требуется, тогда Qt посмотри еще
о, точно. слона то я и не приметил. Спасибо! (пойду смотреть на интерфейсы и копировать себе :(
Если устраивает завязка на платформу, есть Thread Pool API под виндой и Grand Central Dispatch для mac. В линуксе вроде нет подобного api.
Не, требуется кроссплатформа (linux, win, mac, freebsd)
Folly thread pool executor(cpu thread pool executor)
Хм... попахивает архитектурной проблемой: Если приложение CPU bound, то увеличение количества потоков больше чем ядер проца ничего не даст. Уменьшение потоков сэкономит в самом лучшем случае ~~4 мегабайта на поток (что кажется сомнительным выигрышем), и не улучшит потребление CPU Если приложение IO bound, то решать надо не через увеличение количества потоков, а через асинхронность. Если что-то среднее - то тоже скорее всего через асинхронность. Что за задача решается?
Кажется основная идея в том, чтобы выдавать потоки лениво по появлению задач и завершать если они не нужны какое то время(https://github.com/facebook/folly/commit/68a6b5b55b177ae5d9c60a65f9e79f3eb57d10af). На самом деле если у нас несколько инстансов тредпула, ну например несколько приложений запущено в системе, это может быть выгодно по памяти, да и планировщику будет попроще наверно. Хотя я согласен, что оптимизация несколько сомнительная и я бы много мерял прежде чем так делать. Да и какие там цифры ставить тоже не очень понятно (1 - process count ?)
Задача именно такая и решается: написать тредпул такой. Не спрашивайте меня зачем - он там такой не нужен. Но написать надо
Может тогда не писать свой, а взять откуда то? Или по лицензии не подходит? Странно это все.
Ну вот я вижу, что только от poco взять и могу
Выше ссылка на folly
О, нормас. Посмотрю туда. Мб оттуда скопирую
Звучит как лаба из супапро :)))
Мб tbb::task_arena?
а это на самом деле прод :(
хм, посмотрю, спасибо
Обсуждают сегодня