C++ 如果一个基本的\u waitable\u计时器在仍然有异步操作等待的情况下被破坏,该怎么办?

C++ 如果一个基本的\u waitable\u计时器在仍然有异步操作等待的情况下被破坏,该怎么办?,c++,boost,boost-asio,C++,Boost,Boost Asio,如果一个基本的\u waitable\u计时器在仍然有异步操作等待的情况下被破坏,该怎么办?是否在任何地方记录了该行为?它将被取消:调用完成处理程序时出错\u代码为操作\u被中止 相关背景信息:当IO对象(例如)被销毁时,其将调用IO对象服务上的destroy()(不要与IO\u服务混淆),传递IO对象的实现。基本可等待计时器的服务是并满足类型要求的。WaitableTimerService的要求定义了destroy()取消异步等待操作的post条件,使其尽快完成,并且取消操作的处理程序将传递错

如果一个基本的\u waitable\u计时器在仍然有异步操作等待的情况下被破坏,该怎么办?是否在任何地方记录了该行为?

它将被取消:调用完成处理程序时出错\u代码为
操作\u被中止


相关背景信息:

当IO对象(例如)被销毁时,其将调用IO对象服务上的
destroy()
(不要与
IO\u服务
混淆),传递IO对象的实现。
基本可等待计时器的服务是并满足类型要求的。WaitableTimerService的要求定义了
destroy()
取消异步等待操作的post条件,使其尽快完成,并且取消操作的处理程序将传递错误代码
boost::asio::error::operation\u aborted

service.destroy(impl)→ 隐式取消异步等待操作,就像调用
service.cancel(impl,e)
一样

service.cancel(impl,e)→ 使所有未完成的异步等待操作尽快完成。应向取消操作的处理程序传递错误代码
error::operation\u aborted
。设置
e
以指示成功或失败

请注意,已排队等待调用的操作的处理程序不会被取消,并且将有一个反映操作成功的
错误\u code


以下是此行为的完整示例:

#包括
#包括
#包括
无效演示延迟完成()
{
标准::cout