asio教程翻译:定时器 .1 - 以同步方式使用一个定时器 , Timer.1 - Using a timer synchronously
这个教程中的程序会向妳介绍asio,它展示了如何对一个定时器进行阻塞式的等待。
首先包含必要的头文件。
所有 的 asio 类都可以通过包含 "asio.hpp" 头文件来使用。
#include <iostream>
#include <asio.hpp>
由于这个示例中使用了定时器,所以,我们需要相应地包含Boost.Date_Time 头文件,以进行时间处理。
#include <boost/date_time/posix_time/posix_time.hpp>
所有使用asio 的程序,都必需拥有最少一个 io_service 对象。 这个类提供了I/O 功能。 在main 函数中,我们首先声明一个这 种 类型的对象。
int main()
{
asio :: io_service io ;
然后,我们声明一个asio::deadline_timer 对象。asio 中提供I/O 功能(或者,在此例子中,是定时器功能)的那些类,在其构造函数中,第一个参数都是某个io_service 的引用。构造函数的第二个参数,将定时器设置为5秒钟之后超时。
asio :: deadline_timer t ( io , boost :: posix_time :: seconds ( 5 ));
在这个简单的示例中,我们阻塞式地等待该定时器。 也就是说,对于 deadline_timer::wait() 的调用,只有 在该定时器超时之后才会返回, 即, 从它被创建之时( 而不是从开始等待之时算起 )开始算起的 5 秒钟之后。
超时定时 器,一定会处于两个状态中的一个: " 已超时 " 或 " 未超时 " 。如果 ,在一个已超时的定时器上调用 deadline_timer::wait() 函数,则,它会立即返回。
t . wait ();
最后 ,当定时器超时之后,我们输出群众喜闻乐见的 "Hello, world!" 消息。
std :: cout << "Hello, world!" << std :: endl ;
return 0 ;
}
姚莹莹
Your opinionsHxLauncher: Launch Android applications by voice commands