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::launch::deferred
).
I think 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?
Aucun commentaire:
Enregistrer un commentaire