Using boost::asio thread pool for general purpose tasks
Boost.Asio is not solely for network programming, see the reference documentation. It has extensive support for things like
- time based operations (
deadline_timer
) - signal handling
- platform specific operations such as posix streams and Windows handles
I've used it for other purposes in several applications as well. One example being a thread pool to service potentially long running blocking database operations while providing an asynchronous interface for the application. Boost.Asio really is a very powerful library. Using it for a general purpose thread pool as you propose can work just fine.
I don't see any reason not to do things this way. As a benefit, you can use things like deadline timers which are built on top of boost::asio.
I wrote a ThreadPool class with boost asio. It works and it is clean &clear enough to understand easily. ThreadPool with boost asio