C++ 与在每个函数中创建实例特定的io_服务、解析器等相比,使用实例特定的io_服务、解析器等可以吗?

C++ 与在每个函数中创建实例特定的io_服务、解析器等相比,使用实例特定的io_服务、解析器等可以吗?,c++,boost-asio,C++,Boost Asio,我正在尝试使用boost::asio编写自己的异步网络客户端。我在可用示例中观察到的一点是,对于是创建单个io_服务、解析器和查询对象,还是为我创建的每个连接创建这些对象的新实例,缺乏明确性 我有一个客户端,它只会联系一个特定的服务器(唯一的ip和主机),但每天会这样做100次 我计划拥有自己的网络类,在类本身中,我拥有io_服务、解析器、查询和套接字变量,所有这些都是在构建对象时设置的 myclient::myclient() : io_service_(), resolver_(io_ser

我正在尝试使用boost::asio编写自己的异步网络客户端。我在可用示例中观察到的一点是,对于是创建单个io_服务、解析器和查询对象,还是为我创建的每个连接创建这些对象的新实例,缺乏明确性

我有一个客户端,它只会联系一个特定的服务器(唯一的ip和主机),但每天会这样做100次

我计划拥有自己的网络类,在类本身中,我拥有io_服务、解析器、查询和套接字变量,所有这些都是在构建对象时设置的

myclient::myclient() : io_service_(), resolver_(io_service_),
  query_(tcp::v4(), host_, port_), socket_(io_service_) 
{
}

//...

resolver.async_resolve_();
io_service_.reset();
io_service_.run_one();

这个看起来还好吗

对于上面描述的进程,您应该尝试将自己限制为一个io_服务。io_服务类是线程安全的,因此可以同时被多个线程用于分派工作。快速阅读课程文档,其中底部有一些使用示例

还可以查看,并注意io_服务是如何在main函数中创建的,然后通过引用传递给chat_客户端类的