Since C++11 there has been a surge in the amount of parallel/concurrent programming tools in C++: threads, async functions, parallel algorithms, coroutines… But what about a popular parallel programming pattern: thread pool?
As far as I can see, nothing in the standard library implements this directly. Threading via
std::thread can be used to implement a thread pool, but this requires manual labor. Asynchronous function via
std::async can be launched either in a new thread (
std::launch::async) or in the calling thread (
std::async could’ve been easily made to support thread pooling: via another launch policy (
std::launch::thread_pool) which executes the task in an implicitly created global thread pool; or there could be a
std::thread_pool object plus an overload of
std::async which takes a thread pool.
Was something like this considered, and if so, why was it rejected? Or is there a standard solution that I am missing?
Source: Windows Questions C++