在调用相应的回调之前,是否可以删除boost::asio计时器对象

Can the boost::asio timer object be deleted before the corresponding callback is called?

本文关键字:删除 boost 是否 计时器 asio 对象 调用 回调      更新时间:2024-09-27

在任务完成之前,计时器对象是否应该存在?

我的意思是:

boost::asio::io_service io;
{
boost::asio::steady_timer timer(io, std::chrono::seconds(5));
timer.async_wait(someCallback);
} // the timer object is deleted here
io.run();

这是允许的吗?它是否会导致未定义的行为?

析构函数只是取消任何挂起的等待,因此回调将被调用,并返回boost::asio::error::operation_aborted错误代码。