14#include <boost/asio/io_context.hpp>
15#include <boost/asio/post.hpp>
40 template <
typename FunctorT,
typename ResultT =
typename std::result_of<FunctorT()>::type>
45 auto task = std::packaged_task<ResultT()>(std::forward<FunctorT>(functor));
48 auto future = task.get_future();
82 AsyncRun(std::thread::hardware_concurrency());
void CreateThreads(size_t count, F functor)
boost::asio::io_context::work _work_to_do
void AsyncRun(size_t worker_threads)
~ThreadPool()
停止线程池ThreadPool并合并所有线程
void RunFor(time_duration duration)
boost::asio::io_context _io_context
std::future< ResultT > Post(FunctorT &&functor)
Positive time duration up to milliseconds resolution.
constexpr auto to_chrono() const
auto MoveHandler(FunctorT &&func)
下面是一种hack,用于绕过Asio库的限制,使其能够接受仅可移动的处理程序。 如果Asio试图复制一个仅可移动的处理程序,那么编译时可能不会立即报错