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如何在定時器上進行阻塞等待(blocking wait).
實現,我們包含必要的頭文件.
所有的asio類可以簡單的通過include "asio.hpp"來調用.
#include <iostream>
#include <boost/asio.hpp>
此外,這個示例用到了timer,我們還要包含Boost.Date_Time的頭文件來控制時間.
#include <boost/date_time/posix_time/posix_time.hpp>
使用asio至少需要一個boost::asio::io_service對象.該類提供了訪問I/O的功能.我們首先在main函數中聲明它.
int main()
{
boost::asio::io_service io;
下一步我們聲明boost::asio::deadline_timer對象.這個asio的核心類提供I/O的功能(這里更確切的說是定時功能),總是把一個io_service對
象作為他的第一個構造函數,而第二個構造函數的參數設定timer會在5秒后到時(expired).
boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
這個簡單的示例中我們演示了定時器上的一個阻塞等待.就是說,調用boost::asio::deadline_timer::wait()的在創建后5秒內(注意:不是等待
開始后),timer到時之前不會返回任何值.
一個deadline_timer只有兩種狀態:到時,未到時.如果boost::asio::deadline_timer::wait()在到時的timer上調用,會立即return.
t.wait();
最后,我們輸出理所當然的"Hello, world!"來演示timer到時了.
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;
}