在Boost asio的第三个教程中,有一行代码展示了如何重新启动一个定时器并防止出现漂移。该行代码如下:
t->expires_at(t->expires_at() + boost::posix_time::seconds(1));
也许是我自己的问题,但我找不到关于
expires_at()
的第二种用法的文档,没有参数。 expires_at(x)
设置新的过期时间,取消任何挂起的完成处理程序。因此,expires_at()
所做的是什么,返回最后到期的时间?因此,通过添加一秒钟,如果应该有一些毫秒数,比如 n 毫秒,则将从下一个到期时间中“减去”,因为时间已经被计算了?如果在这个例子中执行此处理程序所需的时间大于 1 秒会发生什么?它会立即触发吗?