2011-11-16 95 views
1

我想解决io_service.run()函数如何在客户端中运行。这与this question稍有关系,但在连接的另一端。在客户情况下,没有接受处理程序,那么io_service.run()何时会返回?升压asio http客户端 - io_service.run()

理想我想一次运行(每线程,按照我的理解,修正的欢迎,每次调用io_service.run()线基本上加到io_service对象的线程池),然后发送大量请求,而无需再打电话resetrun 。当io_service没有工作要做时,发送的请求中会有空白,但根据用户行为,这些空白的发生在很大程度上是非确定性的。

回答

2

如您所述,io_service在工作不全时会返回,例如,在服务器中,接受呼叫为其提供工作。为防止io_service耗尽工作,请查看io_service::work类。

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