Using boost::asio thread pool for general purpose tasks Using boost::asio thread pool for general purpose tasks multithreading multithreading

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