Код: Выделить всё
int main() {
auto po = std::execution::par_unseq;
// If Parallel STL uses TBB as the backend, I think the thread pool
// is created during the first time for_each() being called.
std::for_each(po, begin, end, unaryFun);
// Worker threads are put to sleep.
// ... Other things are done by the main thread.
std::for_each(po, begin, end, unaryFun); // Threads wake up and run again.
// ... Other things are done by the main thread.
} // Right before going out of scope, how does the thread pool know to destruct
// itself ?
Однако в более новой версии oneTBB больше нет этой проблемы. Как они это решили? Я не думаю, что ответ настолько глуп, как то, что пул потоков создается и разрушается внутри каждого вызова for_each(). Как пул потоков узнает, что нужно уничтожить себя, выйдя за пределы области действия? Хочу применить такой дизайн и к некоторым другим конструкциям.
Большое спасибо!
Подробнее здесь: https://stackoverflow.com/questions/787 ... ool-design
Мобильная версия