是否需要停止boost::asio::io_service才能使用它
Does boost::asio::io_service need to be stopped to use it?
如果我已经有boost的ios服务在一个单独的线程中运行,如下所示:
boost::asio::io_service ios;
boost::thread bt(boost::bind(&boost::asio::io_service::run, &ios));
是否可以将其用于插座或计时器?还是在将其传递给这些构造函数之前需要停止它?
boost::asio::deadline_timer dt1 = boost::asio::deadline_timer(ios);
是的,异步io必须运行它才能工作-有关详细解释,请参阅此答案。问题是io_service::run方法在没有工作要做并且i/o线程可能只是退出时返回。标准的解决方案是在启动i/o线程之前创建io_service::work实例。此外,您可能希望在后台线程中捕获异常,以防止i/o循环终止。
io_service
是线程安全的,它确实不需要停止才能发布(更多)工作。
当然,你必须确保它仍然在运行,并且只要你想发布额外的工作,它就会一直运行。
CCD_ 2存在于该瞳孔中。
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- 提升 ASIO 无法识别计时器对象
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- boost::asio::steady_timer()与sleep()我应该使用哪一个
- boost::asio如何生成多个协同程序,然后加入它们
- 缓慢提升ASIO
- 从 Boost ASIO 获取 epoll 描述符 io_service对象
- 如何在 Boost.Asio 中使用 Zero-copy sendmsg/receive
- C++ Boost::asio串行通信与Arduino无法写入
- 如何使用 Boost Asio 在 Android 上获取我的本地 udp IP 地址?
- 提升 Asio TCP 服务器 处理多个客户端
- boost::asio UDP 广播客户端仅接收"fast"数据包
- 提升 ASIO - io_service 不要等待连接到线程
- 执行时使用 boost::asio::d eadline_timer 时出错
- Boost.Asio/OpenSSL HTTPS GET certificate trouble
- C++ boost::asio::ip::tcp::acceptor 有时不接受连接器?
- boost::asio data owning `ConstBufferSequence`
- 如何替换此示例代码片段中已弃用的handler_type_t或 boost::asio::handler_type?
- 将 boost 序列化对象的 asio::streambuf 表示转换为 Beast 的 DynamicBody req.body()
- bad_weak_ptr使用从 boost::asio::io_context::service 继承的类