Files

29 lines
580 B
C++
Raw Permalink Normal View History

#include "io_context_pool.h"
namespace logos::plain {
IoContextPool::IoContextPool()
: m_ioc()
, m_guard(boost::asio::make_work_guard(m_ioc))
, m_worker([this]{ m_ioc.run(); })
{
}
IoContextPool::~IoContextPool()
{
// Drop the work guard so run() can return once all outstanding work
// completes, then stop forcefully if something lingers.
m_guard.reset();
m_ioc.stop();
if (m_worker.joinable())
m_worker.join();
}
IoContextPool& IoContextPool::shared()
{
static IoContextPool pool;
return pool;
}
} // namespace logos::plain