- 关键代码片段
#include <iostream>
#include <boost/asio.hpp>
void print(const boost::system::error_code& ec) {
if (!ec) {
std::cout << "Timer expired" << std::endl;
}
}
int main() {
boost::asio::io_context io;
boost::asio::steady_timer timer(io, boost::asio::chrono::seconds(5));
timer.async_wait(print);
io.run();
return 0;
}
- 简要说明
- 首先包含必要的头文件,
<iostream>
用于标准输入输出,<boost/asio.hpp>
引入Boost.Asio库。
print
函数是定时器到期时执行的回调函数,它接收一个boost::system::error_code
参数,用于检查定时器操作是否成功。如果ec
为0,表示定时器正常到期,输出“Timer expired”。
- 在
main
函数中,创建一个boost::asio::io_context
对象io
,它负责管理异步操作。
- 接着创建一个
boost::asio::steady_timer
对象timer
,绑定到io
上下文,并设置5秒后到期。
- 调用
timer.async_wait(print)
,启动异步等待操作,当定时器到期时,会调用print
回调函数。
- 最后调用
io.run()
,启动io_context
,开始处理异步事件,直到所有异步操作完成(这里就是定时器到期执行回调)。