定时器Timers
长时的IO操作往往有一个完成时限。这个时限可以用绝对时间来表示,但是大多数时候我们使用当前时间的相对时间来表示该时限(译者注:deadline = curTime + deltaTime)。
举个简单的例子,在一个同步阻塞式操作中,我们用定时器来实现这个延时:
io_service i;
...
deadline_timer t(i);
t.expires_from_now(boost::posix_time::second(5));
t.wait();
更多时候,程序中使用异步操作:
void handler(asio::error_code ec) {...}
...
io_service i;
...
deadline_timer t(i);
t.expires_from_now(boost::posix_time::milliseconds(400))l
t.async_wait(handler);
...
i.run();
可以使用相对时间:
boost::posix_time::time_duration time_untils_expiry = t.expires_from_now();
或者也可以是一个绝对时间:
deadline_timer t2(i);
t2.expries_at(t.expires_at() + boost::posix_time::seconds(30));
参见
basic_deadline_timer, deadline_timer, deadline_timer_service, timer tutorials.