每一秒钟打印一行

http://www.tuicool.com/articles/Zb263e

计时器的打开和关闭封装

http://andylin02.iteye.com/blog/440572

自己写的简单计时器:程序開始之后2秒钟之后运行第一次到时触发的动作,以后每隔一秒钟都会运行同样的动作;当运行总次数到达3次之后就终止计时,整个程序退出,并停止事件监听,释放资源

#include <iostream>
#include "ace/Log_Msg.h"
#include "ace/Event_Handler.h"
#include "ace/Reactor.h"
#include "ace/Thread_Manager.h" bool stop_event_loop = false;//是否须要终止计时器服务 class My_Timer_Handler : public ACE_Event_Handler
{
public:
My_Timer_Handler(const int delay,const int interval);
~My_Timer_Handler();
int handle_timeout(const ACE_Time_Value& , const void *act /* = 0 */);//计时器到期后运行的回调函数
private:
int n_;//循环计时的次数
long time_handle_;//在计时器队列中的ID
}; My_Timer_Handler::My_Timer_Handler(const int delay,const int interval):n_(0)
{
std::cout<<"My_Timer_Handler()"<<std::endl;
this->reactor(ACE_Reactor::instance());
this->time_handle_ = this->reactor()->schedule_timer(this,//在这里注冊定时器
0,
ACE_Time_Value(delay),//程序一開始延迟delay秒開始首次运行到期函数
ACE_Time_Value(interval));//循环计时,每隔interval秒反复运行
} My_Timer_Handler::~My_Timer_Handler()
{
std::cout<<"~My_Timer_Handler()"<<std::endl;
} int My_Timer_Handler::handle_timeout(const ACE_Time_Value& , const void *act /* = 0 */)
{
if (++this->n_>3)
{
ACE_Reactor::instance()->cancel_timer(this->time_handle_);
stop_event_loop = true;
std::cout<<"cancle_timer"<<std::endl;
}
else
{
std::cout<<"my timer handler handled timeout"<<std::endl;
} return 0;
} int main(int argc, char* argv[])
{ My_Timer_Handler my_handle(2,1); while (true)
{
if (stop_event_loop)
{
std::cout<<"stop handle time"<<std::endl;
break;
}
ACE_Reactor::instance()->handle_events();
} return 0;
}


执行结果例如以下:

My_Timer_Handler()

my timer handler handled timeout

my timer handler handled timeout

my timer handler handled timeout

cancle_timer

stop handle time

~My_Timer_Handler()

请按随意键继续. . .

ACE定时器的更多相关文章

  1. [转载]ACE的陷阱

    转自: http://blog.csdn.net/fullsail/article/details/2915685 坦白说,使用这个标题无非是希望能够吸引你的眼球,这篇文章的目的仅仅是为了揭示一些AC ...

  2. 基于ACE的定时器模板类

    ACETimerClockGenerator.h ClockGeneratorIF.h 在类中定义一个结构体,在结构体中定义一个函数. 在结构体中定义一个函数,这样做有什么好呢? TimerHandl ...

  3. 基于ACE的c++线程封装

    1. 基本需求 1) 一个基类,其某个方法代表一个线程的生命运行周期.之后通过继承自这个基类来实现个性化线程类: 2) 具备类似QObject的定时器设置功能: 3) 提供在线程对象中同步和异步执行方 ...

  4. 【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』

    作者:阿里云用户mr_wid ,z)NKt#   @I6A9do   如果感觉该评测对您有所帮助, 欢迎投票给本文: UO<claV   RsfTUb)<   投票标题:  28.[阿里云 ...

  5. 利用ACE 自己实现的线程池

    1: 线程池组件的配置文件: [log] ;DEBUG = 0 ;INFO = 1 ;WARN = 2 ;FAULT = 3 level=0 ;SCREENOUT = 0 ;FILEOUT = 1 ; ...

  6. 开源网络库ACE、Boost的ASIO、libevent、libev、ZeroMQ

    开源C/C++网络库:ACE          C++语言 跨平台Boost的ASIO  C++语言 跨平台libevent     C语言   主要支持linux,新版增加了对windows的IOC ...

  7. ACE反应器(Reactor)模式(4)

    转载于:http://www.cnblogs.com/TianFang/archive/2006/12/18/596012.html 定时器的实现 通过Reactor机制,还可以很容易的实现定时器的功 ...

  8. ACE反应器(Reactor)模式(1)

    转载于:http://www.cnblogs.com/TianFang/archive/2006/12/13/591332.html 1.ACE反应器框架简介 反应器(Reactor):用于事件多路分 ...

  9. ACE自适配通信环境简介

    转载于:http://www.cnblogs.com/TianFang/archive/2006/12/03/580795.html ACE自适配通信环境 (Adaptive Communicatio ...

随机推荐

  1. [容斥原理] zoj 3556 How Many Sets I

    主题链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do? problemId=4535 How Many Sets I Time Limit: 2 ...

  2. jquery怎么在点击li标签之后添加一个在class,点击下一个li时删除上一个class?

    思路:点击当前li元素后是用removeClass()删除所有兄弟元素(使用siblings()获取)的class样式,然后使用addClass()为当前li添加class. 具体演示如下: 1.HT ...

  3. Bootstrapping (compilers) - Wikipedia, the free encyclopedia

    Bootstrapping (compilers) - Wikipedia, the free encyclopedia Bootstrapping (compilers)

  4. HDU 3549 Flow Problem(有向边网络流)

    九野的博客,转载请注明出处 :http://blog.csdn.net/acmmmm/article/details/11221561 题意:T个测试数据 下面n,m表示n个点m条有向带权边 m条边 ...

  5. 总结showModalDialog在开发中的一些问题

    一.在页面调用window.open()函数后,可以直接在打开的页面中用window.opener来调用父页面的方法,然而如果用showModalDialog打开一个模态窗口,就不能通过window. ...

  6. HDU 1394 Minimum Inversion Number (线段树 单点更新 求逆序数)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题意:给你一个n个数的序列,当中组成的数仅仅有0-n,我们能够进行这么一种操作:把第一个数移到最 ...

  7. 成功为Android系统配上了GNU开发环境

             单击此处获得本文的最新更新 经过一周的艰苦努力,成功为我的小米2手机适配上了全功能的GNU开发环境,完全兼容GNU/LINUX(Android自带的bionic.linker真心不好 ...

  8. POJ 3696 神TM数论

    鸣谢: http://blog.csdn.net/yhrun/article/details/6908470 http://blog.sina.com.cn/s/blog_6a46cc3f0100tv ...

  9. C++ 指针—02 指针与引用的对照

    ★同样点: ●都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址:而引用则是某块内存的别名. ★不同点: ●指针是一个实体,而引用仅是个别名: ●引用仅仅能在定义时被初始化一次,之后不可变: ...

  10. Linux内核源代码解析之TCP面向字节流

    本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/11264237 大家都知道TCP是面向stream,而 ...