利用boost.deadline_timer() 可以很方便的实现定时器功能,详情参考:http://www.boost.org/doc/libs/1_57_0/doc/html/boost_asio/reference/deadline_timer.html
比如等待指定的时间数:
boost::asio::io_service ioservice;
boost::asio::deadline_timer tm(ioservice, boost::posix_time::seconds(5)); //这里指定的是绝对时间,若指定相对时间可用time_duration指定时间段
time.wait();
这里也可以用deadline_timer的两个成员函数来指定需等待的时间,deadline_timer.expires_at(指定绝对时间),deadline_timer.expires_from_now(指定相对时间),在等待的时候可选择同步或者异步,time.wait()或者time.async_wait(handler),操作起来比较方便,而且还是跨平台的。
但是在这里有一个问题,比如我在做一个定时升级的工具时,我想指定升级工具的升级时间,比如是2015.4.12 00:00,按照官网上的做法是,(这里指定的是绝对时间)
boost::asio::io_service ioservice;
//两种不同的时间格式
boost::asio::deadline_timer tm(ioservice, boost::posix_time::time_from_string("2015-04-12 23:01:50");
//boost::asio::deadline_timer tm(ioservice, boost::posix_time::from_iso_string("20150412T230150")); //以T为分隔符
time