2011-11-03 124 views

回答

3

您應該考慮使用async_read_some而不是read_some,因爲它允許您在讀取的同時啓動新的後臺計時器。然後,爲每個新插槽創建一個新計時器:

boost::asio::io_service io_service; 

time_t_timer timer(io_service); 

timer.expires_from_now(333); 
std::cout << "Starting asynchronous wait\n"; 
timer.async_wait(&handle_timeout); 
io_service.run(); 

您將在後臺等待兩個異步呼叫。

無論何時您在定時器上收到一些數據,您都可以使用cancelexpires_from_now來重置倒計時,並且當定時器到期時,您可以關閉套接字或執行其他操作。

+0

如果我接受的時間超過333秒,該怎麼辦? – Rella

+0

@Kabumbus編輯後。 – vz0

相關問題