检查deadline_timer是否有效的任何方法?例如如果它处于async_wait状态并且没有被取消?
答案 0 :(得分:7)
如果取消定时器(以及正常超时),将调用超时处理程序并显示错误条件。那么你可以在调用async_wait
之前简单地设置一个bool,然后在设置错误条件的情况下在处理程序中重置它吗?
答案 1 :(得分:2)
有三种选择:
创建自己的计时器类(当然使用deadline_timer),它有自己的do_async_wait成员。在此成员中,您可以设置一个成员变量,然后可以在内部deadline_timer上调用async_wait之前从bool isWaiting()成员或类似成员返回该变量。请注意,我不认为async_wait成员是虚拟的,因此您不能仅从deadline_timer继承并覆盖。请注意,您还需要在调用处理程序时重置标志(通过使自己的计时器成为处理程序然后转发到任何其他处理程序)或者调用cancel时。
编辑助推器代码以执行您想要的操作。据我所知,这是完全合法的,但这当然不是一个很好的选择。
改变您的要求/设计,以便您不需要知道这一点。
答案 2 :(得分:2)
这个怎么样?
boost::asio::deadline_timer mTimer;
const bool timerExpired = (mTimer.expires_at()
<= boost::posix_time::second_clock::local_time());
答案 3 :(得分:1)
我知道此时这有点旧,但我还有另一个可能的建议:如何获得实现,然后请求是否有可能等待的等待。它看起来像这样:
\r