1. 使用timer时timer析构会导致定时器回调提前被触发
错误例子:
// 错误案例:{asio::steady_timer timer(io_ctx);timer.expires_from_now(10s);timer.async_wait([](){// Do your stuff.});} // timer出了这里就会被析构,析构函数中会提前执行callback逻辑.
改进后:
auto timer = std::make_shared<asio::steady_timer>(*io_ctx_);timer->expires_from_now(timeout);timer->async_wait([timer /* Avoid timer dead. */](const asio::error_code& ignored) {// Do your stuff.});
