【问题标题】:Boost asio http client - io_service.run()提升 asio http 客户端 - io_service.run()
【发布时间】:2011-11-16 18:23:16
【问题描述】:

我正在尝试弄清楚 io_service.run() 函数如何在客户端中运行。这与this question 有点相关,但在连接的另一端。在客户端情况下,没有接受处理程序,那么io_service.run() 什么时候返回?

理想情况下我想运行一次(每个线程,据我了解,欢迎更正,每个调用io_service.run() 的线程基本上都添加到io_service 线程池中)然后发送大量请求而无需调用reset , run 再次。当 io_service 无工作可做时,发送的请求会出现间隙,但这些间隙的发生在很大程度上是不确定的,具体取决于用户行为。

【问题讨论】:

    标签: c++ boost boost-asio


    【解决方案1】:

    正如您所说,io_service 在工作结束时返回,例如在服务器中,accept 调用为其提供了工作。为防止 io_service 耗尽工作,请查看 io_service::work 类。

    link 取自此SO post,提供了如何使用工作对象的概述。特别是将工作对象存储在shared_ptr 中并在想要停止应用程序时重置shared_ptr 等是一个有用的习惯用法。通过不调用 io_service::stop() 方法(也可以用来停止 io_service),您可以干净地完成所有必需的工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-07
      • 2017-08-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多