Boost C++ 库

...世界上最受推崇和专业设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

PrevUpHomeNext

Timer.1 - 使用定时器同步

本教程程序通过展示如何对定时器执行阻塞等待来介绍 asio。

我们首先包含必要的头文件。

所有 asio 类都可以通过简单地包含 "asio.hpp" 头文件来使用。

#include <iostream>
#include <boost/asio.hpp>

所有使用 asio 的程序都需要至少有一个 I/O 执行上下文,例如 io_contextthread_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 - 使用定时器异步


PrevUpHomeNext