Boost.Asio 0.37教程 Timer.1(翻譯自Boost.Asio 0.37的文檔)
原文http://asio.sourceforge.net/boost_asio_0_3_7/libs/asio/doc/
翻譯:張沈鵬 http://blog.csdn.net/zuroc or http://www.shnenglu.com/zuroc
Timer.1 - 同步Timer
本章介紹asio如何在定時(shí)器上進(jìn)行阻塞等待(blocking wait).
實(shí)現(xiàn),我們包含必要的頭文件.
所有的asio類(lèi)可以簡(jiǎn)單的通過(guò)include "asio.hpp"來(lái)調(diào)用.
#include <iostream>
#include <boost/asio.hpp>
此外,這個(gè)示例用到了timer,我們還要包含Boost.Date_Time的頭文件來(lái)控制時(shí)間.
#include <boost/date_time/posix_time/posix_time.hpp>
使用asio至少需要一個(gè)boost::asio::io_service對(duì)象.該類(lèi)提供了訪(fǎng)問(wèn)I/O的功能.我們首先在main函數(shù)中聲明它.
int main()
{
boost::asio::io_service io;
下一步我們聲明boost::asio::deadline_timer對(duì)象.這個(gè)asio的核心類(lèi)提供I/O的功能(這里更確切的說(shuō)是定時(shí)功能),總是把一個(gè)io_service對(duì)
象作為他的第一個(gè)構(gòu)造函數(shù),而第二個(gè)構(gòu)造函數(shù)的參數(shù)設(shè)定timer會(huì)在5秒后到時(shí)(expired).
boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
這個(gè)簡(jiǎn)單的示例中我們演示了定時(shí)器上的一個(gè)阻塞等待.就是說(shuō),調(diào)用boost::asio::deadline_timer::wait()的在創(chuàng)建后5秒內(nèi)(注意:不是等待
開(kāi)始后),timer到時(shí)之前不會(huì)返回任何值.
一個(gè)deadline_timer只有兩種狀態(tài):到時(shí),未到時(shí).如果boost::asio::deadline_timer::wait()在到時(shí)的timer上調(diào)用,會(huì)立即return.
t.wait();
最后,我們輸出理所當(dāng)然的"Hello, world!"來(lái)演示timer到時(shí)了.
std::cout << "Hello, world!\n";
return 0;
}
完整的代碼:
#include <iostream>
#include <boost/asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
int main()
{
boost::asio::io_service io;
boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
t.wait();
std::cout << "Hello, world!\n";
return 0;
}