同步定时器
#include <cstdio>
#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());
t.wait();//同步定时器,5后被调用
std::cout << "Hello, world!\n";
return ;
} 链接库 -lpthread -lboost_system
异步定时器
#include <cstdio>
#include <iostream>
#include <boost/asio.hpp>
#include <boost/thread.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
using namespace std; /****************************************************************
函 数:Print
参 数:void
返回值:const boost::system::error_code &ec -- 执行失败原因
说 明:回调函数
****************************************************************/
void Print(const boost::system::error_code &ec)
{
cout << "Hello World!" << endl;
cout << boost::this_thread::get_id() << endl;//id一致, 在同一个线程中执行
} int main()
{
cout << boost::this_thread::get_id() << endl;//id一致, 在同一个线程中执行
boost::asio::io_service io;
boost::asio::deadline_timer t(io, boost::posix_time::seconds());
t.async_wait(Print);//异步定时器,立马返回
cout << "to run" << endl;
io.run(); //异步IO调度
cout << "exit" << endl; return EXIT_SUCCESS;
}
回调函数绑定参数 boost::bind()
/****************************************************************
函 数:Print
参 数:const boost::system::error_code &ec -- 执行失败原因
参 数:boost::asio::deadline_timer* pt -- 定时器
参 数:int * pcount -- 执行次数
返回值:void
说 明:回调函数
****************************************************************/
void Print(const boost::system::error_code &ec, boost::asio::deadline_timer* pt, int* pcount)
{
if (*pcount < )
{
cout << "count = " << *pcount << endl;
(*pcount)++;
//推迟定时器的终止时间,确保回调函数不会在所需时间内到期
pt->expires_at(pt->expires_at() + boost::posix_time::seconds());
//重新绑定任务
pt->async_wait(boost::bind(Print, boost::asio::placeholders::error, pt, pcount));
}
} int main()
{
boost::asio::io_service io;
boost::asio::deadline_timer t(io, boost::posix_time::seconds());
int count = ;
t.async_wait(boost::bind(Print, boost::asio::placeholders::error, &t, &count));
cout << "to run" << endl;
io.run();
cout << "Final count is " << count << "\n";//
cout << "exit" << endl;
return ;
}

最新文章

  1. odoo8.0 win7 64位 安装配置(补遗)
  2. Poj The xor-longest Path 经典题 Trie求n个数中任意两个异或最大值
  3. Swift开发第七篇——字面量转换&amp;下标
  4. 很好的UI动效设计参考
  5. Java 常用排序算法/程序员必须掌握的 8大排序算法
  6. Springmvc中 同步/异步请求参数的传递以及数据的返回
  7. [转]Windows Azure上安装SharePoint 2013
  8. Android开发手记(19) 数据存储四 ContentProvider
  9. AngularJS的指令(Directive) compile和link的区别及使用示例
  10. ECMAScript 6 笔记(五)
  11. js--DOM&amp;BOM总结思维导图---2017-03-24
  12. 【51NOD1847】奇怪的数学题 min_25筛
  13. 【HNOI 2018】寻宝游戏
  14. Lua IDE工具-Intellij IDEA+lua插件配置教程(Chianr出品)
  15. brctl 命令详解
  16. Mysql 中获取刚插入的自增长id的值
  17. Spring总结 2.装配bean
  18. 在CentOS7(虚拟机)下通过源码安装Postgresql10以及基本配置
  19. 局域网不同网段访问设置WINS域名服务系统
  20. 《TCP/IP具体解释卷2:实现》笔记--选路请求和选路消息

热门文章

  1. Flink 从 0 到 1 学习 —— Flink 配置文件详解
  2. 一个基于vue的仪表盘demo
  3. vue把链接转二维码
  4. Linux常用命令大全(全全全!!!)
  5. python2.x和python3.x版本共存时选择启动的版本
  6. 暑期——第九周总结(1,林子雨老师关于hdfs eclipse案例报错问题【已解决】)
  7. C++进程间通讯方式
  8. JS思考遍历对象
  9. shell管道与重定向
  10. 认识MongoDB复制集