2012-05-01 18 views
0

我想使用boost :: asio編寫我自己的異步網絡客戶端。我在可用示例中觀察到的一件事是,對於是創建單個io_service,解析器和查詢對象還是爲我創建的每個連接創建這些對象的新實例都缺乏明確性。具有特定於實例的io_service,解析器等可以VS在每個函數中創建它們嗎?

我有一個客戶端,它只會聯繫一臺特定的服務器(唯一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(); 

這看起來好嗎?

回答

1

您應該嘗試將自己限制在一個io_service中,以便在上面描述的過程中,io_service類是線程安全的,因此可以一次由多個線程使用來分派工作。快速閱讀io_service類文檔,其中有一些底部的使用示例。

也看看chat client example並注意如何在主函數中創建io_service,然後通過引用傳遞給chat_client類。

相關問題