boost库之asio库, 定时器
2013-11-19 09:54
489 查看
一、同步定时器
1.1 代码
1.2 结果
二、异步定时器
2.1 代码
2.2 结果
三、异步定时器使用bind
3.1 代码
3.2 结果
参考资料:
《Boost程序库完全开发指南》 12.2.2 节和12.2.3节 (P507)
1.1 代码
#include <iostream> using namespace std; #include <boost/asio.hpp> #include <boost/date_time/posix_time/posix_time.hpp> using namespace boost; using namespace boost::asio; int main(int argc, char*argv[]) { io_service ios; deadline_timer t(ios, posix_time::seconds(3)); cout<<t.expires_from_now()<<", "<<t.expires_at()<<endl; t.wait(); cout<<"hello"<<endl; return 0; }
1.2 结果
二、异步定时器
2.1 代码
#include <iostream> using namespace std; #include <boost/asio.hpp> #include <boost/date_time/posix_time/posix_time.hpp> using namespace boost; using namespace boost::asio; void print(const system::error_code& e) { cout<<"async hello."<<endl; } int main(int argc, char*argv[]) { io_service ios; deadline_timer t(ios, posix_time::seconds(3)); t.async_wait(print); ios.run(); return 0; }
2.2 结果
三、异步定时器使用bind
3.1 代码
#include <iostream> using namespace std; #include <boost/asio.hpp> #include <boost/date_time/posix_time/posix_time.hpp> #include <boost/bind.hpp> using namespace boost; using namespace boost::asio; class a_timer { public: template<typename F> a_timer(io_service &ios, int c, F func) : count(0), max_count(c), t(ios, posix_time::millisec(500)), f(func) { t.async_wait(boost::bind(&a_timer::func_proc, this, boost::asio::placeholders::error)); } void func_proc(const system::error_code& e) { if(count >= max_count) return; ++count; f(); t.expires_at(t.expires_at() + posix_time::millisec(500)); t.async_wait(boost::bind(&a_timer::func_proc, this, boost::asio::placeholders::error)); } private: int count, max_count; deadline_timer t; boost::function<void ()> f; }; void print1() { cout<<"timer 1."<<endl; } void print2() { cout<<"timer 2."<<endl; } int main(int argc, char*argv[]) { io_service ios; a_timer a1(ios, 5, print1); a_timer a2(ios, 3, print2); ios.run(); return 0; }
3.2 结果
参考资料:
《Boost程序库完全开发指南》 12.2.2 节和12.2.3节 (P507)
相关文章推荐
- 定时器线程boost库在工作(25)任务之五
- 为什么async函数不会调用我指定的bind函数?解惑Asio库 - C/C++解惑之Boost库
- C++ Boost库 asio同步/异步模式[ 定时器来体现 ] [大三四八九月实习]
- C++ Boost库 asio同步/异步模式[ 定时器来体现 ]
- boost库学习随记六:使用同步定时器、异步定时器、bind、成员函数回调处理、多线程的同步处理示例等
- 【08】 Boost库学习笔记之定时器(Timer)
- 【Boost】boost库中timer定时器
- boost库学习随记六:使用同步定时器、异步定时器、bind、成员函数回调处理、多线程的同步处理示例等
- C++ Boost库 asio同步/异步模式[ 定时器来体现 ] 笔记
- Spring定时器实现
- Spring 定时器
- timer和ScheduledExecutorService延时器与定时器的使用
- Ubuntu12.04下安装Boost库及测试
- 同时用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同个频率持续的时间,间隔300ms依次输出1,10,50,100,200,400,800,1K的方波
- BOOST库 之 tokenizer 字符串的分解
- 七、mini2440裸机程序之定时器中断(2)时钟相关寄存器配置
- IOS第18天(4,核心动画,时钟效果,定时器,图片旋转角度,CALayer 锚点,获取当前,小时,秒,分)
- [第六季]9.定时器与进度条案例
- linux下定时器的使用--timer_create等系列
- iOS开发脚踏实地学习day05-大图滚动和定时器