本教程程序通过展示如何对定时器执行阻塞等待来介绍 asio。
我们首先包含必要的头文件。
所有 asio 类都可以通过简单地包含 "asio.hpp"
头文件来使用。
#include <iostream> #include <boost/asio.hpp>
所有使用 asio 的程序都需要至少有一个 I/O 执行上下文,例如 io_context 或 thread_pool 对象。I/O 执行上下文提供对 I/O 功能的访问。我们首先在 main 函数中声明一个 io_context 类型的对象。
int main() { boost::asio::io_context io;
接下来,我们声明一个 boost::asio::steady_timer 类型的对象。提供 I/O 功能(或者在本例中为定时器功能)的核心 asio 类总是接受一个执行器,或者对执行上下文的引用(例如 io_context),作为它们的第一个构造函数参数。构造函数的第二个参数将定时器设置为从现在起 5 秒后到期。
boost::asio::steady_timer t(io, boost::asio::chrono::seconds(5));
在这个简单的示例中,我们对定时器执行阻塞等待。也就是说,对 steady_timer::wait() 的调用将不会返回,直到定时器过期,即在创建定时器 5 秒后(而不是从等待开始时算起)。
定时器始终处于两种状态之一:“已过期”或“未过期”。如果在已过期的定时器上调用 steady_timer::wait() 函数,它将立即返回。
t.wait();
最后,我们打印出惯例的 "Hello, world!"
消息,以显示定时器何时过期。
std::cout << "Hello, world!" << std::endl; return 0; }
请参阅 完整源代码列表
返回到 教程索引
下一步: Timer.2 - 使用定时器异步