需要解释此boost :: asio计时器示例

App*_*ood 5 c++ boost boost-asio

Boost asio的第3个教程中有一行显示了如何更新计时器并防止其漂移.该行如下:

 t->expires_at(t->expires_at() + boost::posix_time::seconds(1));
Run Code Online (Sandbox Code Playgroud)

也许是我,但我无法找到关于e的第二次使用的文档xpires_at(),没有参数.expires_at(x)设置新的到期时间,取消任何待处理的完成处理程序.所以推测expires_at()会做什么,最后一次到期的返回时间?因此,通过增加一秒,如果应该有一些ms,比如说n ms,那么它本质上将从下一个到期时"减去",因为时间被计算在内?如果在此示例中执行此处理程序所需的时间大于1秒,会发生什么?它会立即开火吗?

jpy*_*man 2

expires_at() 返回设置超时的时间。因此,这会将超时时间移至 1 秒后。

当您使用 expires_at(x) 设置时间时,如果由于时间已过而已调用它,您将得到 0 返回值。如果 return 大于 0,则表示取消的次数。