1. #include <iostream>
  2. #include <boost/asio.hpp>
  3. int main()
  4. {
  5. boost::asio::io_service io;
  6. boost::asio::deadline_timer timer(io, boost::posix_time::seconds(3));
  7. timer.wait();
  8. std::cout << "Hello, world!\n";
  9. return 0;
  10. }

再来个异步的:

  1. void print(const boost::system::error_code& /*e*/)
  2. {
  3. std::cout << "Hello, world!\n";
  4. }
  5. int main()
  6. {
  7. boost::asio::io_service io;
  8. boost::asio::deadline_timer timer(io, boost::posix_time::seconds(5));
  9. timer.async_wait(&print);
  10. io.run();
  11. return 0;
  12. }

上次演示了基本用法,但它只能发生一次.

问题是怎么定义一个重复发生的定时器(就是隔一定的时间它就会发生一次.)呢,下面的代码就是了, 关键在于回调函数中更改了延时不断的延长定时器

    1. void print(const boost::system::error_code& e,
    2. boost::asio::deadline_timer* t)
    3. {
    4. cout<<"ddd"<<endl;
    5. t->expires_at(t->expires_at()+ boost::posix_time::seconds(1));
    6. t->async_wait(boost::bind(print,boost::asio::placeholders::error,t));
    7. }
    8. void test1()
    9. {
    10. boost::asio::io_service io;
    11. boost::asio::deadline_timer t(io, boost::posix_time::seconds(1));
    12. t.async_wait(boost::bind(print,boost::asio::placeholders::error,&t));
    13. io.run();
    14. }
    15. int _tmain(int argc, _TCHAR* argv[])
    16. {
    17. test1();
    18. system("pause");
    19. return 0;
    20. }

boost 定时器.的更多相关文章

  1. 简单的几个Boost定时器

    boost的asio库里有几个定时的器,老的有 deadline_timer , 还有三个可配合 C++11 的 chrono 使用的 high_resolution_timer  . steady_ ...

  2. boost timer 定时器 Operation cancel !

    前面段时间处理一个定时器时,老是提示 操作取消. 硬是没搞明白为什么! 其实我遇到的这个情况很简单就是(boost::asio::deadline_timer timer)这个变量的生命同期结束了,对 ...

  3. 使用boost的deadline_timer实现一个异步定时器

    概述 最近在工作上需要用到定时器,然后看到boost里面的deadline_timer可以实现一个定时器,所以就直接将其封装成了ATimer类,方便使用,ATimer有以下优点: 可以支持纳秒.毫秒. ...

  4. boost库学习随记六:使用同步定时器、异步定时器、bind、成员函数回调处理、多线程的同步处理示例等

    一.使用同步定时器 这个示例程序通过展示如何在一个定时器执行一个阻塞等待. //makefile #-------------------------------------------------- ...

  5. [Boost基础]并发编程——asio网络库——定时器deadline_timer

    asio库基于操作系统提供的异步机制,采用前摄器设计模式(Proactor)实现了可移植的异步(或者同步)IO操作,而且并不要求使用多线程和锁定,有些的避免了多线程编程带来的诸多有害副作用(如条件竞争 ...

  6. boost asio 学习(六) 定时器

    http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting- started-with-boostasio?pg=7 6 定时器 ...

  7. 使用boost线程定时器作为后台线程来切换主循环程序状态方法2

    上一篇的方法主要使用的是:通过线程延时实 现的定时,并且只能定时一次,如果需要对此定时处理,就需要使用下面的定时器: #include "stdafx.h" #include &l ...

  8. Tcp/ip实验准备:一个简单的定时器——boost实现

    tcp/ip实验须要在指定的时间查看结果,为了实验方便,做了一个定时器.用法是: 在命令行输入:timer 输入数字之后,计时对应秒数 输入m数字之后.计时对应分钟数(支持小数分钟数) 输入q退出. ...

  9. boost::asio学习(定时器)

    #include <boost/asio.hpp> #include <iostream> void handle1(const boost::system::error_co ...

随机推荐

  1. CodeManage 源代码管理器v2.0发布

    下载地址 欢迎大家提出宝贵的意见和bug

  2. (转)jQuery插件开发模式

    要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈 ...

  3. ADO.Net总结

    ADO.NET简介 一.    ADO.NET的组成(ADO.NET是什么?能干什么)客户体验      ADO.NET就是一组类库可以让我们通过程序的方式访问数据库 ADO.NET主要包括5个对象, ...

  4. vim搜索后跳到下(上)一个

    搜索高亮后, 跳到下一个:小写n 上一个:大写N

  5. oracle学习笔记(一)用户管理

    --oracle学习第一天 --连接 @后面连接数据库实例,具体连接到那个数据库 conn scott/tiger@MYORA1; --修改密码 passw; --显示用户 show user; -- ...

  6. CocoaPod安装

    http://www.360doc.com/content/14/0309/10/11029609_358970353.shtml http://www.bubuko.com/infodetail-4 ...

  7. redis基础操作

    /** * redis的Java客户端Jedis测试验证 * * @author */ public class Test { /** * 非切片客户端链接 */ private Jedis jedi ...

  8. C/C++中的空类及抽象类大小

    代码: #include <iostream> using namespace std; struct A{ }; struct B{ int i; }; class C:B{ ; }; ...

  9. windows下自动删除n天前的文件

    使用windows2003下的内置命令forfiles配合计划任务可以实现自动删除n天前的文件. windows2003中设定自动执行的计划任务很简单. 一.脚本编写 forfiles命令用法: Fo ...

  10. PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toStr

    PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep ...