2011-11-16 94 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),您允許完成所有必需的工作乾淨地