2011-11-03 164 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

相关问题