定时器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.

results matching ""

    No results matching ""