每一秒钟打印一行

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. WM_PAINT产生原因有2种(用户操作和API)——WM_PAINT和WM_ERASEBKGND产生时的先后顺序不一定(四段讨论)

    1. 当WM_PAINT不是由InvalidateRect产生时,即由最大化,最小化等产生时,或者移动产生(移动有时只会产生WM_ERASEBKGND消息)系统先发送WM_ERASEBKGND消息,再 ...

  2. MIPS平台目标机安装Oprofile时出现error

    在Debian下安装Oprofile 重要:应该使linux内核选项支持 在 .config 文件中设置CONFIG_PROFILING=y和CONFIG_OPROFILE=y. 重新编译,烧写.使用 ...

  3. NEU 1173: 这是物理学的奇迹!! 分解质数

    1173: 这是物理学的奇迹!! 题目描述 goagain在做物理电学实验时需要一个2Ω的电阻,但是他发现他的实验台上只剩下了3Ω,4Ω,5Ω,6Ω的电阻若干,于是goagain把两个4Ω的电阻并联起 ...

  4. JavaFX游戏开发效率浅谈

    声明:   本博客文章原创类别的均为个人原创,版权所有.转载请注明出处: http://blog.csdn.net/ml3947,另外本人的个人博客:http://www.wjfxgame.com. ...

  5. RIO包 健壮的I/O函数代码

    下面是关于 #include <stdio.h> #include <string.h> #include <errno.h> #include <sys/t ...

  6. [IDEs]Eclipse设置花括号样式

    用惯Vistual Studio,在使用Eclipse时发现有很多东西还是挺不习惯,第一个就要解决花括号的样式 步骤: 1.Windows->Preferences->Java->C ...

  7. [Cocos2d-x]Mac下运行HelloCpp For Android

    2013年12月22日 一.简介: Mac下运行Cocos2d-x的samples和新建的HelloCocos2dx项目 二.内容: 环境: OS:mac OS X 10.9.1 IDE:Androi ...

  8. HDU 1498 50 years, 50 colors(最小点覆盖,坑称号)

    50 years, 50 colors Problem Description On Octorber 21st, HDU 50-year-celebration, 50-color balloons ...

  9. java特权制度设计篇

    数据库表设计 1.1.1.   模块管理(jk_module) 项 类型 说明 id long 就是数据库记录idx号 name string 模块名称 orderid int 排序id  由小到大显 ...

  10. POJ 1300 Door Man - from lanshui_Yang

    Description You are a butler in a large mansion. This mansion has so many rooms that they are merely ...