c++ - 需要解释这个 boost::asio 计时器示例

标签 c++ boost boost-asio

在 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/

相关文章:

c++ - 在流中多次设置值

c++ - 如何处理 PNG 文件中的 Gamma 校正和颜色?

c++ boost MPI & threading - 序列化错误 : Address not mapped

c++ - boost::shared_ptr 和 std::shared_ptr 的共存

c++ - boost::asio::deadline_timer::async_wait 不触发回调

c++ - 如何调用 boost::asio 异步函数

异步读取 inotify 描述符失败

c++ - openssl 包含 Visual Studio 2012 无法识别的路径

c++ - 需要帮助矢量化此代码

c++ - ublas:将 ublas::vector 包装为 ublas::matrix_expression