这个问题是由于调用了io_context的stop()函数后没有停止计时器导致的。在停止io_context和停止acceptor之前应该停止计时器。以下是一个示例代码:
asio::io_context io_context;
// 创建acceptor和socket等
asio::steady_timer timer(io_context);
timer.expires_after(std::chrono::seconds(5));
timer.async_wait([&](boost::system::error_code ec) {
// 在计时器触发时停止acceptor和io_context
if (!ec) {
acceptor.close();
io_context.stop();
}
});
// 运行io_context
io_context.run();