在 Boost asio 的第 3 教程中有一行显示了如何更新计时器并防止其漂移。该行如下:
t->expires_at(t->expires_at() + boost::posix_time::seconds(1));
也许是我的问题,但我找不到关于 expires_at()
第二次使用的文档,没有参数。 expires_at(x)
设置新的到期时间,取消任何未决的完成处理程序。所以大概 expires_at() 做了什么,最后一次到期的返回时间?因此,通过增加一秒,如果应该有一定数量的毫秒,比如 n 毫秒,那么它实际上会从下一个到期时间中“减去”,因为时间正在计算中?如果在此示例中执行此处理程序所需的时间大于 1 秒,会发生什么情况?它会立即触发吗?
最佳答案
expires_at() 返回设置为超时的时间。所以这会将超时时间移到 1 秒后。
当您使用 expires_at(x) 设置时间时,如果由于时间已过而已被调用,您将返回 0。如果 return 大于 0,则表示已取消的次数。
关于c++ - 需要解释这个 boost::asio 计时器示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2481693/