拥有特定于实例的io_service、解析器等可以 VS 在每个函数中创建它们
Having instance specific io_service, resolver etc is okay VS creating them in every function?
我正在尝试使用boost::asio编写自己的异步网络客户端。我在可用示例中观察到的一件事是,对于是创建单个io_service、解析器和查询对象,还是为我正在创建的每个连接创建这些对象的新实例,都不清楚。
我有一个客户端,它只会联系特定的服务器(唯一的IP和主机),但每天会这样做100次。
我计划拥有自己的网络类,并且在类本身中,我在构造对象时设置了io_service、解析器、查询和套接字变量。
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_service,因为上面描述的进程io_service类是线程安全的,因此可以同时被许多线程用于调度工作。 快速阅读io_service类文档,其中底部有一些使用示例。
另请查看聊天客户端示例,并注意如何在 main 函数中创建io_service,然后通过引用传递给 chat_client 类。
相关文章:
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 在VS Code中编译C / C ++时如何禁用自动创建EXE文件?
- 从现有项目(VS)创建静态库
- 如何在VS Code中创建C++项目并链接主,函数和标题?
- 使用库时的标准 - 使用库的数据类型 VS 创建我自己的类型?
- 无法创建或打开 *.VS 2015 中的 VC.db 文件(桌面快速版)更新 3RC
- 在C++VS中创建和保存映像
- C vs Java:无尽的循环创建对象仅崩溃C
- VS 2013 社区 - 创建代码片段
- 无法在VS 2013、Windows 8.1中创建Win32控制台应用程序
- 在使用 VS-add 创建项目时不能包含 Qt 类
- 2个项目可以在MS VS 2008中创建单个DLL
- 拥有特定于实例的io_service、解析器等可以 VS 在每个函数中创建它们
- 如何在VS Community 2015中创建C++控制台应用程序
- 如何在 MFC 中访问主对话框的元素?元素是在可视化编辑器VS 2012中创建的
- 无法加载或创建项目 VS 2015.1.无法创建 Visual c# 2015 编译器
- 直接使用函数参数vs创建局部变量
- 使用msbuild在没有vs的计算机上编译由vs2010创建的vcxproject
- 在方法中实例化对象vs.创建类成员
- 创建对象,局部变量vs右值引用